最后选择的一定是树上的一个连通块,考虑树分治,每次只需考虑重心必选的情况,这就变成了以重心为根的树形依赖多重背包问题。设f[x][j]表示从根节点到x这条路径及其左边的所有节点,以及以x为根的子树的所有节点中,容量为j的背包选取物品所能得到的最大价值。对于x的儿子y,将f[y]初始值设为f[x]中强...
分类:
其他好文 时间:
2015-07-25 18:02:34
阅读次数:
103
http://acm.hdu.edu.cn/showproblem.php?pid=1171Big Event in HDUTime Limit: 10000/5000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Su...
分类:
其他好文 时间:
2015-07-24 22:10:00
阅读次数:
141
1 #include 2 #include 3 4 using namespace std; 5 6 int v[2010]; 7 int w[2010]; 8 long long int dp[400010]; 9 10 int main()11 {12 int T;13 ...
分类:
其他好文 时间:
2015-07-23 00:24:10
阅读次数:
120
多重背包...----------------------------------------------------------------------------#include #define rep(i, n) for(int i = 0; i > n; rep(i, n) scanf("%...
分类:
其他好文 时间:
2015-07-22 20:21:26
阅读次数:
110
多重背包单调队列优化是思想是。普通的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
POJ 1837 Balance (多重背包计数)...
分类:
其他好文 时间:
2015-07-15 22:50:02
阅读次数:
136
多重背包#include#include#include#includeusing namespace std;const int maxn=111;int p[maxn],h[maxn],c[maxn];int dp[maxn];int main(){ int T; scanf("%d...
分类:
其他好文 时间:
2015-07-15 14:43:08
阅读次数:
110
HDU 2844 Coins (多重背包计数 空间换时间)...
分类:
其他好文 时间:
2015-07-14 00:11:11
阅读次数:
229
HDU 2159 FATE (二维多重背包)...
分类:
其他好文 时间:
2015-07-13 00:53:20
阅读次数:
128