随笔分类 -  动态规划--背包DP

摘要:$n \leq 50$的树,每个点有权值,现要选点(可多次选一个点)使点数尽量多,如下限制:选的总权值不超过$C \leq 1e9$;$c_i$表示$i$选的次数,$p_i$表示$i$的父亲,那么$c_{p_i} \leq c_i \leq c_{p_i}+D$,$D \leq 1e9$是给定常数。 阅读全文
posted @ 2018-04-23 15:31 Blue233333 阅读(513) 评论(0) 推荐(0)
摘要:$n \leq 2500$个人选$m \leq n$个,每人有花费有收益,还有依赖人,选他前必须选依赖人。问最大的收益花费比。 01分数规划。$\sum p_i-ts_i \leq 0$,这式子成立时要把$t$调小,不成立时要把$t$调大,我们希望$t$大,就尽可能让他不成立,所以就尽可能让左边大。 阅读全文
posted @ 2018-04-12 12:58 Blue233333 阅读(179) 评论(0) 推荐(0)
摘要:$n \leq 10000$个盒子,有高度,高度总和$\leq 10000$,盒子有重要的和不重要的,问最多有多少重要盒子的底端在区间$[L,R]$。 这是个入门级的DP,但需要一点胆量MD这题能放DIV1E。。 放盒子顺序:不重要的,重要的,然后乱放。不重要的可以无脑放,但重要的需要一定的顺序。。 阅读全文
posted @ 2018-04-11 20:50 Blue233333 阅读(350) 评论(0) 推荐(0)
摘要:n<=500的树上有点权(有正负),选若干个点使点权和>=X(<=1e6)并且相邻点的对数最多,输出相邻点最多多少对。 在n个点里选某权和的最多相邻点->在n个点里选某数量的相邻点使权和最大 f(i,j,0/1)--子树i中选j对相邻关系,不选/选择节点i的最大权和, 就是个背包嘛。不过注意一下背包 阅读全文
posted @ 2017-09-27 15:20 Blue233333 阅读(371) 评论(0) 推荐(0)
摘要:n<=400个东西,每个东西有高度<=100,这种东西在堆放过程中不得超过的最大高度<=40000,以及每个东西的个数<=10,求最高能堆多高。 算了下背包复杂度不太对然后开了bitset。。 1 #include<stdio.h> 2 #include<string.h> 3 #include<s 阅读全文
posted @ 2017-09-19 19:14 Blue233333 阅读(505) 评论(0) 推荐(0)
摘要:n<=50个游戏机有花费,每个游戏机有Gi<=10种游戏,每种游戏有花费有收益,买了游戏机才能玩对应游戏,求最大收益。 这就是一个背包!不过有依存关系,就不会了! 方法一:f[i][j]表示游戏机i用j块钱能得多少收益,这是可以预处理的,而g[i][j]表示前i个游戏机用j块钱最大收益, 果断tle 阅读全文
posted @ 2017-09-07 19:19 Blue233333 阅读(155) 评论(0) 推荐(0)
摘要:n<=100种硬币,给每种的硬币的面额<=120和我每种有多少个<=10000,店主的硬币跟我一样但有无限个,求买t<=10000块钱的东西钱最少转手几次。 我拿的硬币最少几次就是多重背包,店主还的最少当然是完全背包啦,那问题在于这个背包多大呀? 找回来的钱和我给的钱一定没有交集,如果有,那当初少给 阅读全文
posted @ 2017-09-06 14:26 Blue233333 阅读(235) 评论(0) 推荐(0)
摘要:S<=50只股票D<=10天的价格给出,求第一天开始用n<=200000元最后能得到的最大钱数,保证答案<=500000。 做D次完全背包即可,每次做完把dp数组清空。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #i 阅读全文
posted @ 2017-08-03 11:17 Blue233333 阅读(317) 评论(0) 推荐(0)