==== 动态规划 ====
柠檬不酸只是萌
遇 见 最 美 的 自 己 。
展开
-
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 · 441 阅读 · 0 评论 -
FZU 1896 — 神奇的魔法数
原题:http://acm.fzu.edu.cn/problem.php?pid=1896思路:dp[i][j]表示前i位且最高位为j的魔法数个数;然后将范围相减;#include#include#include#include#includeusing namespace std;int dp[15][15];int m;void pre(){原创 2015-05-16 16:13:06 · 497 阅读 · 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 · 448 阅读 · 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 · 469 阅读 · 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 · 523 阅读 · 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)概率dpdp[i]表示到第i个人得到奖品数的期望;所以dp[i]等于上一个原创 2015-03-26 21:29:25 · 613 阅读 · 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 · 417 阅读 · 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 · 512 阅读 · 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 · 552 阅读 · 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 · 604 阅读 · 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 · 447 阅读 · 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 · 647 阅读 · 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 · 359 阅读 · 0 评论