题意 考虑点分治来枚举树上联通块,对于一个联通块,我们做有依赖性的树形DP即可,需要用单调队列优化多重背包。 有依赖性的树形DP code: #include<bits/stdc++.h> using namespace std; const int maxn=510; const int maxm ...
分类:
其他好文 时间:
2020-06-05 15:05:32
阅读次数:
53
【参考博客及视频】 1、大雪菜 2、背包九讲——全篇详细理解与代码实现 3、dd大牛的《背包九讲》 4、背包问题 (附单调队列优化多重背包 【题目】 1、Acwing 背包题目 2、01背包问题 Luogu 2925 干草出售Luogu 1616 疯狂的采药HDU 3466 Proud Mercha ...
分类:
其他好文 时间:
2019-09-07 11:10:34
阅读次数:
116
"思路" 这里只是贴一下 JZOJ4224.食物 的代码,挺有意思的水题,虽然一眼就看得出来两个多重背包,但是比较有意思的一个地方是在处理交通工具时为了求出答案,把价格当做体积,把最大装载量当做价值。一切思路还是为了答案服务,这是值得记住的。 c++ include include include ...
分类:
其他好文 时间:
2019-08-11 10:49:35
阅读次数:
83
回顾多重背包 有n种物品,用大小为m的包来装,问获取的最大价值为多少。其中,第 i 种物品的重量,价值,个数分别为 w[i],v[i],c[i]. 那么,若f[i][j]表示考虑前 i 种物品,使用 j 的背包可获取的最大价值,状态转移方程为 for(int i=1;i<=n;i++) for(in ...
分类:
其他好文 时间:
2019-05-03 09:41:24
阅读次数:
171
就是按照 % 体积的余数来分组,每组单调队列优化。 直接上模板好了。 1 #include <bits/stdc++.h> 2 3 typedef long long LL; 4 const int N = 100010; 5 6 int n, V, cnt[N], cost[N]; 7 LL f[ ...
分类:
其他好文 时间:
2019-03-14 18:36:05
阅读次数:
115
背包问题 写这篇文章主要是为了帮帮新人吧,dalao勿喷.qwq 一般的背包问题问法 每种物品都有一个价值w和体积c.//这个就是下面的变量名,请看清再往下看. 你现在有一个背包容积为V,你想用一些物品装背包使得物品总价值最大. 01背包 多种物品,每种物品只有一个.求能获得的最大总价值. 我们考虑 ...
分类:
其他好文 时间:
2018-10-28 17:54:36
阅读次数:
192
朴素的多重背包算法为 $$ f[i][j]=\max(f[i 1][j kv_i]+kw_i)(kv_i\le j,k\le lim[i])? $$ 时间复杂度为$O(V\sum lim[])$。 先枚举i。设$d=\lfloor\frac{j}{lim[i]}\rfloor$,$r=j lim[i ...
分类:
其他好文 时间:
2018-10-08 23:19:59
阅读次数:
337
http://codevs.cn/problem/5429/ 把背包体积按 模物品体积 分类 在每个剩余类中使用单调队列 具体点就是 设物品体积为v,价值为w,现在要计算体积模v=0时的价值 设f[i][j] 表示 前i个物品,体积为j时的最大价值 f[i][5v]=max{ f[i-1][4v]+ ...
分类:
其他好文 时间:
2018-01-30 23:10:10
阅读次数:
322
记得有一个经典的问题: 有一个容量为$V$的背包,和$n$种物品。第$i$种物品的重量为$w_{i}$,价值为$v_{i}$,数量为$c_{i}$。问背包中装的物品的最大价值和为多少。 有一个容量为$V$的背包,和$n$种物品。第$i$种物品的重量为$w_{i}$,价值为$v_{i}$,数量为$c_ ...
分类:
其他好文 时间:
2018-01-06 19:06:34
阅读次数:
139
多重背包单调队列优化是思想是。普通的dp为
dp[i][j]=max{dp[i-1][j-k*v[i]]+k*w[i]};
其实你可以发现对能更新j是j和一个剩余类。也就是
0, v[i],2v[i],3v[i] ,4v[i]...
1 ,1+v[i],1+2v[i],1+3v[i]
...........
v[i]-1,2*v[i]-1......
更新值存在一个剩余类中,组与组...
分类:
其他好文 时间:
2015-07-17 14:05:16
阅读次数:
252