博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ_1276 Cash Machine (多重背包)
阅读量:7085 次
发布时间:2019-06-28

本文共 1358 字,大约阅读时间需要 4 分钟。

  又是几天不做题,一个二进制优化的多重背包让我写的狗屁不通,错漏百出!TLE, WA了好几次,都是细节啊。

思路,很裸的多重背包。

My Code:

 

1 #include 
2 #include
3 #include
4 5 using namespace std; 6 7 const int N = 100010; 8 const int M = 1024; 9 10 int f[N]; 11 int k[M], c[M]; 12 13 int Max(int x, int y) {
14 return x > y ? x : y; 15 } 16 17 18 int main() {
19 //freopen("data.in", "r", stdin); 20 21 int V, n, m, i, j; 22 while(~scanf("%d%d", &V, &n)) {
23 for(i = 0; i < n; ++i) {
24 scanf("%d%d", k + i, c + i); 25 } 26 27 for(i = 0; i <= V; ++i) f[i] = 0; 28 29 for(i = 0; i < n; ++i) {
30 if(k[i]*c[i] > V) { //complete pack 31 for(j = c[i]; j <= V; ++j) {
32 f[j] = Max(f[j], f[j - c[i]] + c[i]); 33 } 34 } else { //zero one pack with binary optimize 35 m = 1; 36 while(k[i]) {
37 if(m > k[i]) m = k[i]; 38 k[i] -= m; 39 for(j = V; j >= c[i] * m; --j) {
40 f[j] = Max(f[j], f[j - c[i] * m] + c[i] * m); 41 } 42 m <<= 1; 43 } 44 } 45 } 46 printf("%d\n", f[V]); 47 } 48 return 0; 49 }

 

转载地址:http://xpgml.baihongyu.com/

你可能感兴趣的文章
区块链每日一问丨比特币怎么储存最安全?
查看>>
分享 | 带来全新交互体验的『支付宝AR』技术大解密
查看>>
升级Windows 10常见问题解决方案汇总
查看>>
曾鸣:区块链的春天还没有到来
查看>>
SqlServer性能检测和优化工具使用详细
查看>>
玩转无线电 -- 温哥华天车 RFID 票务系统
查看>>
innobackupex全量备份和增量备份脚本
查看>>
Entity Framework 4-从模型创建数据库
查看>>
【AI科幻】地球陨落 · 全新世界
查看>>
Vue.js 2.0 学习重点记录
查看>>
批处理大全
查看>>
面对对象的三大特征
查看>>
JAVA入门[14]-Spring MVC AOP
查看>>
bootstrap35-按钮嵌套
查看>>
Oracle常用的性能诊断语句
查看>>
2017世界交通运输大会在京开幕
查看>>
Linux日志卷空间不足造成Samba无法登陆
查看>>
local dns
查看>>
VR资本寒冬,终究是个伪命题
查看>>
如何使用HackRF做一个简单的IMSI捕获器
查看>>