==== 动态规划 ====
柠檬不酸只是萌
遇 见 最 美 的 自 己 。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
NYOJ 737 — 石子合并(一) 区间dp
原题:http://acm.nyist.net/JudgeOnline/problem.php?pid=737 思路: dp[i][j]表示合并第i堆到第j堆的最小代价; 在i到j之间寻找分割点k,其合并的代价为dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1]; (其中sum[i]表示前i堆石子的数量和) #include #include #define原创 2015-07-25 13:48:08 · 518 阅读 · 0 评论 -
FZU 1896 — 神奇的魔法数
原题:http://acm.fzu.edu.cn/problem.php?pid=1896 思路: dp[i][j]表示前i位且最高位为j的魔法数个数; 然后将范围相减; #include #include #include #include #include using namespace std; int dp[15][15]; int m; void pre() {原创 2015-05-16 16:13:06 · 584 阅读 · 0 评论 -
ZOJ 3872 — Beauty of Array
原题:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3872 题意:求n个数的所有相邻的子数组的和,但重复的数字不加; 譬如:2 3 3 — 相邻子数组:2;3;3;23;33;233; sum = (2)+(3)+(3)+(2+3)+(3)+(2+3)= 21; 思路:a[i]表示到第i原创 2015-04-26 15:45:22 · 552 阅读 · 0 评论 -
POJ 2096 — Collecting Bugs
原题:http://poj.org/problem?id=2096 题意: 有n类bug,s个子系统,bug数量不限,每天只能发现一个bug; 问在s个子系统中发现n类bug所需要的天数的期望; 思路: dp[i][j]表示在j个子系统中发现i类bug所需天数的期望,dp[n][s] = 0,每次发现bug有四种情况: 1)在已经发现的子系统和bug种类中,即dp[i][j],概率为p原创 2015-03-28 22:10:06 · 518 阅读 · 0 评论 -
ZOJ 3329 — One Person Game
原题:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3329 题意:有三个色子,分别有k1,k2,k3面,点数为1到k; 每次掷色子,若点数分别为a,b,c时则将分数清零,否则加上三个点数和; 当分数>n时,游戏结束,问需要掷色子次数的期望; 思路: dp[i]表示当分数为i时到游戏结束所需掷色原创 2015-03-29 14:35:56 · 608 阅读 · 0 评论 -
SGU 495 — Kids and Prizes
原题: 题意:有n个奖品,奖品各自放在盒子里,m个人轮流选取,若盒中有奖品则拿走,但不管怎样,盒子依然放回。问得到奖品数的期望。 思路:1)数学推理 每个奖品不被选中的概率为(1-1/n)^m,那么每个奖品被选中的概率为1-(1-1/n)^m; 所以总期望为n*(1-(1-1/n)^m); 2)概率dp dp[i]表示到第i个人得到奖品数的期望;所以dp[i]等于上一个原创 2015-03-26 21:29:25 · 682 阅读 · 0 评论 -
HDU 1003 — Max Sum
原题:http://acm.hdu.edu.cn/showproblem.php?pid=1003 题意:求最大和的最长子序列。 思路:dp[i]表示第1个数到第i个数的最大子序列和。 每次当我们判断第i个数是否应该加上去,都以dp[i-1]为基准。 将dp[i-1]+a[i]与a[i]进行比较,若dp[i-1]+a[i]<a[i],则dp[i] = a[i]。 因为我原创 2015-03-15 20:45:36 · 493 阅读 · 0 评论 -
HDU 4405 — Aeroplane chess
原题:http://acm.hdu.edu.cn/showproblem.php?pid=4405 题意:看题目就知道是玩飞行棋。有n+1个格子,编号0 — n,起点在0,; 有m组联通的格子,比如a和b联通,那么当我在a时就可以直接飞到b;问走到终点所扔色子次数的期望; 思路:dp[i]表示走到i时所扔色子数的期望,显然dp[n] = 0;每个点都是两种情况,要么可以飞,要么不能;原创 2015-03-28 19:34:58 · 591 阅读 · 0 评论 -
POJ 3311 — Hie with the Pie
原题:http://poj.org/problem?id=3311 题意:从起点0开始,遍历所有的点并回到起点的最短距离,每个点可以经过多次。 思路:先用floyd求出各点之间的最短距离。因为一共是n+1个点(0 — n),所以一共有(1 dp[s][i]表示s状态下到达i的最优解,状态转移方程:dp[s][i] = min(dp[s][i], dp[s^(1 dp[s^(1原创 2015-03-20 19:47:14 · 627 阅读 · 0 评论 -
HDU 1024 — Max Sum Plus Plus
原题:http://acm.hdu.edu.cn/showproblem.php?pid=1024 题意:求m个子段相加的最大和, 并且这几个子段不相交。 思路:dp[i][j]表示前j个数取出i断的最大值,那么状态转移方程为dp[i][j] = max(dp[i][j]+a[j], dp[i-1][k]+a[j])。 dp[i][j]+a[j]表示将a[j]加入到j-1所在的子段中原创 2015-03-18 22:59:30 · 684 阅读 · 0 评论 -
HDU 3853 — LOOPS
原题:http://acm.hdu.edu.cn/showproblem.php?pid=3853 题意: 有一个r行c列的格子,起点(1,1),终点(r,c); 每次都有三种选择,不走,向右走,向下走,每走一步消耗两点魔法值,分别给出三种选择的概率; 问走完迷宫所消耗魔法值的期望; 思路: dp[i][j]表示走到(i,j)所消耗魔法值的期望,dp[r][c原创 2015-03-28 20:37:12 · 531 阅读 · 0 评论 -
CodeForces 30C — Shooting Gallery
原题:http://codeforces.com/problemset/problem/30/C 题意:给出n个靶子的坐标(x, y),出现的时间t,以及击中靶子的概率p; 枪每秒移动一个单位的距离; 问击中靶子数的期望最大值; 思路:dp[i] 表示到i为止击中靶子数的期望最大值; #include #include #inclu原创 2015-04-05 20:35:36 · 738 阅读 · 0 评论 -
POJ 2955 — Brackets 区间DP
原题:http://poj.org/problem?id=2955 题意: 括号匹配,一对( )或者一对[ ],个数为2; 问一共有多少个匹配的括号; 思路: dp[i][j]表示第i个字符到第j个字符的最大匹配数; 如果第i个字符没有可与之匹配的括号则 dp[i][j] = dp[i+1][j]; 如果str[i] 和 str[k]匹配,则dp[i][j] = dp[i+1原创 2015-07-25 16:15:10 · 412 阅读 · 0 评论
分享