摘要: 题意:在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 分析:按照行走路径状态转移即可。 阅读全文
posted @ 2017-08-11 18:59 Somnuspoppy 阅读(147) 评论(0) 推荐(0)
摘要: 题意:已知n个设备的价值和数量,将它们分给AB两人,要求两人分得价值尽可能相同,且A>=B。 分析: 1、每种设备的数量是有限个,所以相当于有cnt个设备,每个设备具有一定的价值,B分得的价值最大为sum/2。 2、背包容量为sum/2,每个设备可选可不选,因此A的价值为sum - dp[sum / 阅读全文
posted @ 2017-08-11 18:24 Somnuspoppy 阅读(131) 评论(0) 推荐(0)
摘要: 题意:已知n种砖,每种砖有无穷多个,问这些砖最多能堆多高,要求堆放时,上面的砖摆放的长和宽必须都严格小于下面砖的长和宽。 分析: 1、将砖堆放时的堆放面上所有的长x和宽y统计出来,去重,且记录时保证x<y。每种砖最多能统计出三种长和宽。 2、如果之前的砖比当前砖长和宽都严格小,则可将之前的砖放在这个 阅读全文
posted @ 2017-08-11 15:52 Somnuspoppy 阅读(169) 评论(0) 推荐(0)
摘要: 题意:从起点依次跳跃带有数字的点直到终点,要求跳跃点上的数字严格递增,问跳跃点的最大数字和。 分析: 1、若之前的点比该点数字小,则可进行状态转移,dp[i] = max(dp[i], dp[j] + a[i]); 2、dp[i] 截止到i,跳跃的最大数字和。 3、由于不确定最终是哪个点直接跳往终点 阅读全文
posted @ 2017-08-11 14:50 Somnuspoppy 阅读(121) 评论(0) 推荐(0)