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

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

好久 好久 好久 没搞过多重背包的题了,不过还是挺模版的。加上二进制优化了,不加目测会超时。

每次都感觉自己写的转换二进制,这么搓呢。。。

1 #include 
2 #include
3 #define N 100001 4 int p[N],v[N]; 5 int main() 6 { 7 int i,j,k,c,num,n,sum,vv,max; 8 while(scanf("%d",&c)!=EOF) 9 {10 memset(p,0,sizeof(p));11 memset(v,0,sizeof(v));12 scanf("%d",&n);13 j = 1;14 for(i = 1;i <= n;i ++)15 {16 scanf("%d%d",&num,&vv);17 sum = vv*num;k = vv;18 for(;;)19 {20 if(sum <= 0)21 break;22 sum -= k;23 v[j] = k;24 j ++;25 k *= 2;26 if(k > sum)27 {28 if(sum != 0)29 {30 v[j] = sum;31 j ++;32 }33 break;34 }35 }36 }37 n = j-1;38 for(i = 1;i <= n;i ++)39 {40 for(j = c;j >= v[i];j --)41 {42 if(p[j] < p[j-v[i]]+v[i])43 p[j] = p[j-v[i]]+v[i];44 }45 }46 max = 0;47 for(i = 1;i <= c;i ++)48 if(max < p[i])49 max = p[i];50 printf("%d\n",max);51 }52 return 0;53 }

转载于:https://www.cnblogs.com/naix-x/archive/2012/07/30/2615438.html

你可能感兴趣的文章
算法第5章作业
查看>>
Oracle 创建表空间的时候显示 数据库未连接
查看>>
java中的运算符
查看>>
Windows 常用消息及含义
查看>>
环境部署
查看>>
English trip -- VC(情景课)5 C It's on Main Street 在主街上
查看>>
[剑指Offer] 20.包含min函数的栈
查看>>
Ant -----ant标签和自定义任务
查看>>
Docker: repository, image, container
查看>>
Dijkstra算法
查看>>
laravel4.2 union联合,join关联分组查询最新记录时,查询条件不对,解决方案
查看>>
架构之数据库分表分库
查看>>
三星 S4 手机误删除相片(相册)后的恢复问题,仅记录处理过程,其它Android手机同样适用...
查看>>
【pattern】设计模式(2) - 模版方法模式
查看>>
SSM商城系统开发笔记-问题01-通配符的匹配很全面, 但无法找到元素 'mvc:annotation-driven' 的声明。...
查看>>
nyoj--84--阶乘的0(数学技巧)
查看>>
Creational --- Singleton
查看>>
JAVA-随机生成四则运算
查看>>
vue 创建监听,和销毁监听(addEventListener, removeEventListener)
查看>>
Java使用JAX-WS来写webservice时 Unable to create JAXBContext
查看>>