HDU1171
2015-05-31 12:16
183 查看
以sum/2为总容量的0-1背包
#include <iostream> #include <algorithm> #include <string.h> using namespace std; int li[5010],dp[250005]; int main(){ int n; while(cin>>n){ if(n<0) break; int num=0,sum=0; for(int i=0;i<n;i++){ int a,b; cin>>a>>b; for(int k=0;k<b;k++){ li[num++]=a; } sum+=a*b; } memset(dp,0,sizeof(dp)); for(int i=0;i<num;i++){ for(int j=sum/2;j>=li[i];j--){ dp[j]=max(dp[j],dp[j-li[i]]+li[i]); } } cout<<max(dp[sum/2],sum-dp[sum/2])<<" "<<min(dp[sum/2],sum-dp[sum/2])<<endl; } }
相关文章推荐
- JQ 选择器、属性 、筛选、文档处理、事件、效果
- Js jQuery 一些用法(1)
- Office2010安装问题总结
- 黑马程序员——C语言中的指针变量初步认识
- ListView有背景图片或背景颜色,那么在滑动ListView的时候,ListView的背景会变黑
- 性能优化
- kali安装后的基本配置
- 回顾SIGKDD被拒
- Mybatis JNDI集成C3P0数据源
- 我的乐高机器人
- linux 查看文件
- spark streaming测试之四设置窗口大小接收数据
- 编码表概述和常见编码表
- java 设计模式-----适配器模式
- 周末充电之WPF(三 ) .后台动态生成控件
- 初学lua的几个博客 挺好的
- 自测4. Have Fun with Numbers (20)
- Android 颜色对照表
- 特征提取-特征后期融合-多核学习方法(MKL)
- PHP设计超级好用的文件上传处理类一 (37)