他都告诉你能拆了 那就拆呗。把每个重量拆成$a*2^b$的形式 然后对于每个不同的b,先分开做30个背包 再设f[i][j]表示b<=i的物品中 容量为$ j*2^i+W\&((1<<(i-1))-1) $(就是这一位是j+W的前i-1位)的最大权值(这个容量没必要填满) 然后f[i][j]就可以从 ...
分类:
其他好文 时间:
2018-10-27 22:36:05
阅读次数:
188
" bzoj1190 ,懒得复制,戳我戳我" Solution: 这道题其实是一个背包(分组背包),但是由于数字比较大,就要重新构造dp式子。啃了三天才懂。 $dp[i][j]$表示背包容积为$j 2^i$时的最大价值。 首先,因为每一个物品一定是$a 2^b$,我们可以按照$b$值先按照普通的分组 ...
分类:
其他好文 时间:
2018-04-29 16:28:35
阅读次数:
404
题目描述 给你N颗宝石,每颗宝石都有重量和价值。要你从这些宝石中选取一些宝石,保证总重量不超过W,且总价值最大为,并输出最大的总价值。数据范围:N<=100;W<=2^30,并且保证每颗宝石的重量符合a*2^b(a<=10;b<=30) 输入 输入文件中包含多组数据。每组数据的格式如下:第一行是两个 ...
分类:
其他好文 时间:
2017-09-26 16:04:36
阅读次数:
130
Description 给你N颗宝石,每颗宝石都有重量和价值。要你从这些宝石中选取一些宝石,保证总重量不超过W,且总价值最大为,并输出最大的总价值。数据范围:N<=100;W<=2^30,并且保证每颗宝石的重量符合a*2^b(a<=10;b<=30) 给你N颗宝石,每颗宝石都有重量和价值。要你从这些 ...
分类:
其他好文 时间:
2017-09-16 23:11:53
阅读次数:
227
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1190神题。。。。。。F[i][j]表示容量为j*2^i+W第i-1位到第0位的最大价值,其实就是 j*2^i+W的第i-1位*2^(i-1)+W的第i-2位*2^(i-2)+......+W的第...
分类:
其他好文 时间:
2015-07-18 18:24:10
阅读次数:
95
题目大意:01背包,其中weight
直接背包肯定TLE+MLE
考虑到每个weight都能写成a*2^b的形式,显然我们要按照b分层来进行背包
令f[i][j]表示有j*2^i+(w&(1
首先每层内部先做一个01背包
然后层与层之间再转移
从大到小枚举j 转移方程为f[i][j]=max{f[i][j],f[i][j-k]+f[i-1][min(k*2+((w>>i-1)&1)...
分类:
其他好文 时间:
2015-02-26 16:39:02
阅读次数:
172