动态规划——背包类dp
#
夕林山寸
这个作者很懒,什么都没留下…
展开
-
CF1442 D - Sum 思维分析 + 分治优化01背包
给你n个栈,你需要对于每一个栈,从前往后选择若干个,栈中每一个元素有一个贡献,问选择k个的最大贡献是多少。 思路: 首先可以想到:最终一定是选完若干个栈,最后剩一个栈选若干元素。 证明: 若最后存在两个栈未选完:栈a,b. a选到i,b选到j。 假设a[i]>a[j],显然a[i+1]>a[j]; 完全可以不选a[j],选择a[i+1].所以最后一定至多有一个栈未被选完。 然后:就有了做法: 枚举是哪个栈最后未被选完,然后对其他栈打包做一个01背包。 总复杂...原创 2020-11-05 20:34:24 · 276 阅读 · 0 评论 -
CodeForces_1348E Phoenix and Berries DP
显然,同颜色的框会很多,而同树的框最多n个。即每棵树最多1个。 因为一旦一棵树的框多于1,其可以转化为多个同颜色框+1个同树框。 所以问题就变成了n个树,每棵树可以选择用不用同树框。这其实就是一个01背包的变形。 dp[i][j][k]表示执行到前i颗树,红色剩j个,蓝色剩k个,的状态,最大满筐数是多少。 这样是个n^4的dp,根据经验,可以省去蓝色的那一维,转而用总量减去红色剩余量来表示...原创 2020-05-02 19:16:59 · 627 阅读 · 3 评论