题意:

杭电搬迁,有N种设备,每种设备有个价值V,数量M,要求将这些设备平分,使得平分后两边的总价值尽可能地相等。

输出两边各自的总价值。

思路:

背包DP后,P=所有的总价值/2,然后从P开始往两边找到第一个满足的价值。

可以降维,但是要注意for循环的顺序。

看代码。

代码:

int v[55], m[55];
bool dp[250005]; int main(){ int n;
while(scanf("%d",&n)!=EOF && n>=0){
int tot = 0;
rep(i,1,n){
scanf("%d%d",&v[i],&m[i]);
tot += (v[i]*m[i]);
} mem(dp,false);
dp[0]=true; rep(i,1,n){
rep(j,1,m[i]){
rep2(k,tot,j*v[i]){
dp[k]=(dp[k] || dp[k-j*v[i]]);
}
}
} int ts = tot/2;
int ans1=-1,ans2=-1;
rep2(i,ts,0){
if(dp[i] && dp[tot-i]){
ans1=i;
ans2=tot-i;
break;
}
} cout<<ans2<<" "<<ans1<<endl;
} return 0;
}

最新文章

  1. 菜鸟-手把手教你把Acegi应用到实际项目中(3)
  2. 传智Java基础知识测试
  3. android SDK 更新
  4. js的水仙花数的输出
  5. 输入url会发什什么
  6. java设计模式------工厂设计模式
  7. libaio.so.1()(64bit) is needed by MySQL-server 问题解决办法
  8. [Swift]LeetCode174. 地下城游戏 | Dungeon Game
  9. SSM(Spring4.x.x+SpringMVC4.x.x+Mybatis3.4.x)框架整合
  10. python基础自学 第五天(附带视频和相关资源)
  11. monit检测语法
  12. idea language level 介绍
  13. day_5.10py 爬妹子图片 mm131
  14. windows下安装python-Levenshtein
  15. H5本地存储一
  16. &lt;&lt;精通正在表达式&gt;&gt; 书评
  17. javascript 理解对象--- 属性类型
  18. 自定义ActionBar图标
  19. hdu1022 模拟栈
  20. jQuery (样式篇)

热门文章

  1. 机器学习——softmax回归
  2. 洛谷P1019——单词接龙(DFS暴力搜索)
  3. [NOIP2015 普及组] 扫雷游戏
  4. Java基础(六)——集合
  5. Jmeter系列(24)- 常用逻辑控制器(3) | 模块控制器Module Controller
  6. java 小算法
  7. 数字图像处理(一)之灰度转换和卷积python实现
  8. InstallScript脚本语言基本知识(一)
  9. Python中生成器的理解
  10. 如何查找一个目录中所有c文件的总行数