--------类背包dp
文章平均质量分 63
扩展的灰
扩展的灰(Extended Ash)
展开
-
Jzoj5408 Dark
LichKing 希望收集邪恶的黑暗力量,并依靠它称霸世界。 世间的黑暗力量被描述成一个长度为N 的非负整数序列{Ai},每次它可以选择这个序列中的两个相邻的正整数,让他们的值同时减一并获得一点邪恶力量,直到不存在满足条件的数。 然而你不希望他能够得逞,所以你会使得他收集的能量尽可能少。 这个题目存在线性的dp,这里先说一种ΣAi的方法 我们设f[i][j][0/1]表示现在正在做第i原创 2017-11-06 20:36:30 · 255 阅读 · 0 评论 -
Bzoj1004 [HNOI2008]Cards
小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有 多少种染色方案,Sun很快就给出了答案.进一步,小春要求染出Sr张红色,Sb张蓝色,Sg张绝色.他又询问有多少种方 案,Sun想了一下,又给出了正确答案. 最后小春发明了M种不同的洗牌法,这里他又问Sun有多少种不同的染色方案. 两种染色方法相同当且仅当其中一种可以通过任意的洗牌法(原创 2018-01-25 16:33:10 · 278 阅读 · 0 评论 -
Jzoj5542 董先生的钦点
这道题在我做的前一天被wjw大佬压中了,当时随便脑洞了一个做法 于是在比赛还剩3分钟的时候我把它写了一下就切了 考虑一个集合S,f(S)=ΣSi 显然我们将所有的f排序之后有一个性质rank[f(S)]+rank[f(~S)]=2^N 那么显然,中位数就是将全集划分为两个尽可能平均的集合的较大一部分 我们考虑dp,f[i]=max(f[i-v[j]]+v[j]) ,答案即为f[S/2]原创 2018-01-24 17:27:49 · 630 阅读 · 1 评论 -
Jzoj3528 图书馆
圣玛格丽特大图书馆是一座由石材砌成的角柱型高塔,是欧洲屈指可数的巨大书库。图书馆整面墙壁都是巨大的书架,书架与书架之间就像巨大的迷宫一般,以细窄的木制楼梯连结。大图书馆的最高处是一个绿意盎然的植物园,维多利加正在那无聊地看着书。今天,一如往常地,久城要爬上这迷宫般的楼梯给维多利加送讲义。 图书馆墙壁上有N个平台,编号为1到N,入口为1号,植物园为N号。有M个连接两个不同平台的楼梯,爬每个楼梯需要原创 2018-01-22 19:18:05 · 447 阅读 · 0 评论 -
Jzoj4892 最优得分
给你n道题目,你有t的时间,每个题有一个初始的分数Ai,让后每过1分钟,第i道题目分值减少Bi 假设你可以做出全部题目,而做一个题i的用时是固定的常数Ci,那么请问你最多能得到多少分 (好刺激的赛制呢) 显然是一个dp,但是光dp还不够,我们还要套上贪心才能最优 考虑当前已经决定做哪几道题目,那么用什么顺序去完成这些题目得分最高? 我们随便考虑一个顺序X,考虑交换其中两个题目X[j]和X原创 2017-11-02 21:44:19 · 368 阅读 · 0 评论 -
Jzoj5426 摘Galo
0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO。 这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Galo,美味度为w[i]。 OvO发现,如果她摘下了i号Galo,那么i的子树中的Galo以及i到根的路径上的其他Galo都会死掉。 OvO的袋子只能装k个Galo,她的嘴巴里还能叼1个,请问她所摘Galo的美味度之和的最原创 2017-11-08 16:15:00 · 376 阅读 · 0 评论 -
Jzoj4710 Value
题意:有n([1,5000])个物品,每一个有价值v和代价w,当你选择了这个物品后,剩下没选的物品价值减少w,问最大价值? 假设我们已经选好了物品,那么显然,按照w升序排序贪心是最优的选择 让后我们可以用dp来计算最优方案,这样的话我们需要将物品按照w降序排序,否则无法计算转移时的价值变化量 #pragma GCC opitmize("O3") #pragma G++ opitmize(原创 2017-10-14 21:55:43 · 278 阅读 · 0 评论 -
Jzoj4713 A
题意:给出n个没有区别的物品放入k个没有区别的盒子,求方案数 这个题目可谓计数dp的经典 我们令f[i][j][k]表示现在所有数和为i,有j个,最后一个为k的方案数 那么显然,f[i][j][k]=∑f[i-p][j-1][p](1 这样用前缀和,可以做到kn^2,水到60pts 如何优化?我们发现状态表示其实是有可以改进的地方的,k这一位可以省掉 为什么呢? 我们发现,如原创 2017-10-14 22:20:34 · 274 阅读 · 0 评论 -
Jzoj3223 Ede的新背包问题
最简单的方法肯定是暴力,每次询问都做一次背包,显然这样会超时 我们可以用二进制分拆法或者是用单调队列优化复杂度到O(qnm),可是依然不能过 注意到每次不能取的部分只有一个,那我们考虑用前缀和后缀分别维护,最后合并两个部分的答案 f[i][j]表示做到第i个物品的状态,g[i][j]表示倒着做i个物品的状态 最后合并两边即可原创 2017-09-25 15:52:49 · 426 阅读 · 0 评论 -
Jzoj1322硬币
动态规划,设f[i][j]为上一次取到第i个硬币,上一次取了j个硬币的最大答案,则f[i][j]=max(SUM[i]-f[i-k][k]),对于f[i][j],可以沿原创 2017-09-20 19:12:58 · 349 阅读 · 0 评论 -
Jzoj1279 解题
过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目.精确地说,他们有P (1 <= P <= 300) 道题目要做. 他们还离开了农场并且象普通人一样找到了工作. 他们的月薪是M (1 他们的题目是一流的难题,所以他们得找帮手.帮手们不是免费的,但是他们能保证在一个月内作出任何题目.每做一道题需要两比付款, 第一笔A_i(1 <= A_i <= M)元在做题原创 2017-09-19 20:51:22 · 409 阅读 · 0 评论 -
Jzoj5661 药香沁鼻
有依赖关系的树形背包,算是又积累了一种做法 一个经典的做法就是设f[x][j]表示在x子树内,容量为j的最大获利 那么转移可以写成 f[x][j]=max{f[x][j],f[x][j-k]+f[v][k]} v是x的子树 我们在dp时记录背包的剩余空间,就可以得到80分 一个更好的优化就是用dfs序,复杂度直接下降为O(nm) 当然最快的做法还是直接在树上做,我们还是设f[x][j]表原创 2018-04-20 20:56:36 · 283 阅读 · 0 评论