![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
来来我们都是水果
nothing
展开
-
uva 11552
uva 11552 刚开始用的贪心,wawawawawa,心都碎了,改来改去我觉得已经很完美了还是不行。。。后来学长说用dp 真是d了个p的。。。动态规划想不好还真容易看成贪心,可是我现在依旧找不到测试数据证明我贪心是错的。 DP: 1.k=1时;。。。 2.k!=1时 { 2.1 i-1行的末尾同时存在与第i行 且 当前行只有这一种字母 。。。原创 2015-08-03 08:49:13 · 461 阅读 · 0 评论 -
csu 1120 病毒(DP,LCIS)
最长公共上升子序列~“病毒” 刚开始看这道题的时候一直想着往之前最公共子序列里面套,但是差别还是蛮大的,本来这道题时集训选拔时套题里面的,当时会错了题意以为题目里面没有给两个串的长度,太奇葩hold不住。今天才发现我居然误解题意这么久。。。 思路: 对于第一串的任意一个a[i],dp[j]表示第二串0~j之间能够与第一串0~i之间构成的公共上升子序列的最大长度原创 2015-08-03 10:24:30 · 362 阅读 · 0 评论 -
zoj 3551 Bloodsucker 概率DP
思路 1:求出全部变成吸血鬼所需天数的数学期望, 2:因为每次有且只有两个“生物”相遇,所以每个人变成吸血鬼只考虑一次,也就是说得到的数学期望是实为每个人变成吸血鬼所需天数的和 3:dp[i]表示从i开始到全部为吸血鬼所需天数的数学期望 4:令dp[n]=0表示第n个 也就是最后一个本来就是吸血鬼, pp=double((i*(n-i))*2/double(n*(n-1)))原创 2015-08-04 10:29:36 · 355 阅读 · 0 评论 -
zoj 1366 Cash Machine 多重背包
背包的衍生物~~~ 原谅我背包没掌握好,卡了好久。。。 = = 思路: 1.将多重背包转化为01背包(使用二进制转化,得到用最少的能够得到任意值的份数) 2.dp[i]表示该情况是否可能出现,在主循环中使用递减的顺序给dp[i]赋值,1:已出现,0:未出现。(初始化dp[0]=1,表示可以为0) #include #include #include using namesp原创 2015-08-03 17:48:02 · 294 阅读 · 0 评论 -
CF 148D Bag of mice 概率DP
刚开始总感觉dp用一维就可以了,dp[i]表示第i局公主获胜的概率,然后卡在了逃出的是白鼠黑鼠的判断上,两种状态需要分开讨论,但是在概率上又会同时对后续结果有影响,与此同时 这两种情况又是不共存的,所以考虑二维数组,如果i表示第几局的话,dp[i][j]中j打死我也想不到有价值的表示意义。所以我肯定刚开始的思路都是错误的。。。 换思路,=.= 想不通, 好吧看题解。。。。。。。。。。。原创 2015-08-04 14:01:58 · 290 阅读 · 0 评论 -
codeforces 229D Towers DP
Towers 题意:获得连续高度呈非递减状态的序列,相邻塔高可合并,每合并一次代表一次操作,求出能得到该种序列的最小操作次数 思路:刚开始想用贪心,后来发现总是有情况没办法考虑到,wa了多次,后来经指点再次体会动态规划的魅力。第二次在需要动态规划时病急投医想到贪心,无药可救 dp{i]表示考虑到第i个塔时的操作次数,再用一个数组sum[i]表示前i个塔高的总和,便于从sum[i]-sum原创 2015-08-06 08:49:22 · 789 阅读 · 0 评论