码迷,mamicode.com
首页 > 其他好文 > 详细

codeforces #286 Div.2 C DP总是以意外的方式打败我

时间:2015-01-19 23:21:00      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

题目大意:30001个岛排成一排,编号从0到30000,一共有n个宝物分散在这些岛上,一只猪最开始从0跳到d,之后每一步跳的步长和上一步相差不超过1,第二步步长就是d-1,d,d+1,第二步的位置就是d+d-1,d+1,d+d+1如果d=1,那么下一步不能调0长,经过有宝藏的岛会把宝藏带走,问他最终能拿到多少宝藏。

 

因为(1+250)*250/2>30000,所以步长不会超过250——get勾

肯定要dp——get勾

如果在某个岛步长可以是1,那么这个岛之后的所有宝藏都能拿到——get勾

 

歧途在于不能考虑当前状态dp[i][sp]是从哪些状态来的比如说dp[i-sp][sp-1],dp[i-sp][sp],dp[i-sp][sp+1]

而要考虑当前状态dp[i][sp]可以用来给哪些状态信息比如说dp[i+sp][sp-1],dp[i+sp][sp],dp[i+sp][sp+1]

要做总结可以说是后推是确定的,追溯是不确定的,但是我在想为什么我对dp总是一看就懂一做就挂,对比上面两行就差一个加减号,昨天群上还有人问背包问题的正向for和逆向for有什么区别,我多年不清楚就没多想,dp的祖宗没学好啊,不细心。

现在想想,背包的话一定是当前状态找来源来确定值,因为要先知道更小容量的背包的放置情况,也不可能在放下一个物品后就确定对后面的有什么影响。

 

今天回来时闻到一片腊梅香,好喜欢品客薯片的盐味,食堂关的只剩两个,抄手有点油腻。

codeforces #286 Div.2 C DP总是以意外的方式打败我

标签:

原文地址:http://www.cnblogs.com/beingthan/p/4234949.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!