1019-S专题三
2016-05-29 11:26
357 查看
1.题号:1019-S
2.题意:给出每个商品的价值和数量,如何分使得A,B所得价值最接近,并且A的价值不能小于B
3.思路:转化为0-1背包问题,与装包问题异曲同工,状态转移方程为 dp[j] = max(dp[j],dp[j-val[i]]+val[i])
4.感想:与前面装包问题思路相同
AC代码
2.题意:给出每个商品的价值和数量,如何分使得A,B所得价值最接近,并且A的价值不能小于B
3.思路:转化为0-1背包问题,与装包问题异曲同工,状态转移方程为 dp[j] = max(dp[j],dp[j-val[i]]+val[i])
4.感想:与前面装包问题思路相同
AC代码
#include <stdio.h> #include <string.h> #include<iostream> #include<algorithm> using namespace std; int main() { int val[6005]; int dp[255555]; int n,i,j,a,b,l,sum; while(cin>>n,n>0) { memset(val,0,sizeof(val)); memset(dp,0,sizeof(dp)); l = 0; sum = 0; for(i = 0;i<n;i++) { cin>>a>>b; while(b--) { val[l++] = a; sum+=a; } } for(i = 0;i<l;i++) { for(j = sum/2;j>=val[i];j--) { dp[j] = max(dp[j],dp[j-val[i]]+val[i]); } } printf("%d %d\n",sum-dp[sum/2],dp[sum/2]); } return 0; }
相关文章推荐
- [sql2008错误问题] RegisteredServerException 异常
- redis事件
- 输出响应的数据给客户端并结束请求,继续执行后面的代码
- 1264 芳香数
- Java千百问_03基础语法(012)_transient关键字有什么用
- 通过自定义单元格渲染器在Jtable中显示超链接
- Leetcode - 14. Longest Common Prefix
- 集合类的简介
- Codeforces Round #326 (Div. 2)B. Duff in Love
- C++11智能指针
- display:table、box和width百分比来均分盒子的比较(2)
- HTML5之存储
- 第六届河南省程序设计大赛
- 使用Apache CXF开发Web Service步骤
- 第十四周项目 阅读程序 3
- Gym 100917E Extreme Permutations(状压dp)
- CSS定义超链接四个状态的正确顺序L-V-H-A
- 第十四周项目 阅读程序 2
- 2016SDAU编程练习三1004
- Leetcode 232. Implement Queue using Stacks