HDU 1171 Big Event in HDU(多重背包)
2015-07-20 14:28
387 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1171
题意:
连续输入多组数据
n种设备
输入n组数据,每组包括设备的价值v,以及设备的数量m
将这些设备分为两组,使得价值尽可能均分,如果不能均分,A得到的一定要大于B得到的
输出A,B的最终得到的设备价值
解题思路:
多重背包转化为01背包
将所有的设备的数量都变成1,重新存入数组
题意:
连续输入多组数据
n种设备
输入n组数据,每组包括设备的价值v,以及设备的数量m
将这些设备分为两组,使得价值尽可能均分,如果不能均分,A得到的一定要大于B得到的
输出A,B的最终得到的设备价值
解题思路:
多重背包转化为01背包
将所有的设备的数量都变成1,重新存入数组
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <string> using namespace std; int p[5005]; int ans[250005]; int main() { int n; while(~scanf("%d",&n) && n>0) { memset(ans,0,sizeof(ans)); int s=0,l=0; int vi,mi; for(int i=0;i<n;i++) { scanf("%d%d",&vi,&mi); for(int j=0;j<mi;j++) { p[l]=vi; l++; s+=vi; } } for(int i=0;i<l;i++) { for(int j=s/2;j>=p[i];j--) { ans[j] = max(ans[j],ans[j-p[i]]+p[i]); } } printf("%d %d\n",s-ans[s/2],ans[s/2]); } return 0; }
相关文章推荐
- O - Extended Traffic(判断负环)
- HDU 2289 Cup
- js 数组Array
- 栈类 - 链式存储
- Python中默认参数self的理解
- Struts2自定义拦截器实例—登陆权限验证
- html5利用websocket完成的推送功能
- 栈类 - 链式存储
- MeasureSpec学习
- hdu 3033 分组背包(每组至少选一个)
- 百度Java研发面经100题 总结
- Swift2.0语言教程之闭包
- windows server 2012 多用户访问
- uva 1407(树形dp)
- Swift2.0语言教程之闭包
- [转]ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习
- 黑马程序员---异常处理
- ios学习笔记: IOS8解决获取位置坐标信息出错(Error Domain=kCLErrorDomain Code=0)
- 20150718--面试常见问题(1)
- WinDbg的符号下载与符号路径设置