动态规划
瞭望的叶子
爱拼才会赢
展开
-
HDU 5366 简单动态规划DP
这个题意思是有一行长度为1*N,然后求解至少放一个木桩有多少种办法。 博主我是用一种笨的方法,也就是模拟,如果想不出可以用这种方法,笨但是对于背包问题很有效。请看下图: 这样可以写出方程f[i,j]=f[i,j-1]+f[i-1,j-3]; 此外还有种一维方程是推导出来的: 假设在状态i时可以分解为:1)如果该处无木桩就考虑dp[i-1]的情况,如果有就考虑dp[i-3]的情况然后原创 2015-08-09 19:59:04 · 356 阅读 · 0 评论 -
HDU 2602
当年学的第一个背包,拿出来。http://acm.hdu.edu.cn/showproblem.php?pid=2602 经典01背包问题,挺适合学习的。 01背包的状态转换方程 f[i,j] = Max{ f[i-1,j-Wi]+Pi( j >= Wi ), f[i-1,j] } f[i,j]表示在前i件物品中选择若干件放在承重为 j 的背包中,可以取得的最大价值。原创 2015-08-09 18:50:05 · 340 阅读 · 0 评论 -
hdu 动态规划学习目标
Robberies http://acm.hdu.edu.cn/showproblem.php?pid=2955 背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱 最脑残的是把总的概率以为是抢N家银行的概率之和… 把状态转移方程写成了f[j]=max{f[j],f[j-q[i].v]+q[i].money}(f[j]表示在概率j之下能抢的大洋转载 2015-08-10 15:03:50 · 266 阅读 · 0 评论 -
CCF 最大的矩形
题意:不用说了,反正就是怎么最大怎么来。 这次用的还是较笨的办法,当然感谢老赵同学的帮助。传送门开启:传送门。我说一下思路,引用DP的思想,在某个状态下,假设是第三个矩形我们可以选择自身,也可以选择后面的矩形形成最大面积。下面贴代码: #include #include #include #include using namespace std; int a[1001]; int d原创 2015-08-10 17:15:02 · 818 阅读 · 0 评论 -
HDU 1506 DP 动态规划思想
这个题有人用并查集A掉了,实在是服气。我是百度了之后,其实当时已经想到了思路,就差那临门一脚,然而卡了几个小时,最后还是看了别人的。惭愧惭愧, 说一下思路:之前的矩形是搜索最小的传送门,在此题中可以假定在这个状态时,这个矩形的高度已经是最小的,所以此处面积必定以他作为高度,那么我们只要向左搜索最高的 再记录下标,再向右寻找出最高的地方,并且记录下标。那么此时的面积必定为此状态的最大。可以用案例原创 2015-08-10 20:10:29 · 465 阅读 · 0 评论 -
CCF 有趣的数
代码和思路全在里面,读者可以自己模拟 #include #include #include #include using namespace std; int main() { /* 6个状态 取 2 取 0 2 取 2 3 取 2 3 0 取 2 0 1 取 全部 1 2 3 4 5 6 0 1 1 1原创 2015-08-13 17:37:30 · 354 阅读 · 0 评论