UVA
来源:互联网 发布:win10装ubuntu 编辑:程序博客网 时间:2024/06/06 03:21
题意:给定n个硬币,要求将这些硬币平分以使两个人获得的钱尽量多,求两个人分到的钱最小差值。
思路:先将所有硬币的总额算出来为sum,以sum/2为背包容量,算出dp[sum/2],然后abs(sum-2*dp[sum/2])就是最小的差值;
#include<iostream>#include<algorithm>#include<string>#include<cstring>#include<map>#include<queue>#include<cmath>#include<stack>#include<vector>#include<cstdio>#define MAXN 33000#define INF 0x3f3f3f3f#define lmid l,m,rt<<1#define rmid m+1,r,rt<<1|1#define ls rt<<1#define rs rt<<1|1#define Mod 1000000007#define i64 __int64using namespace std;int num[105];int dp[30000];int main(){ int t; scanf("%d",&t); while(t--) { memset(dp,0,sizeof(dp)); int sum=0; int n; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&num[i]); sum+=num[i]; } int m=(sum+1)/2; for(int i=0;i<n;i++) for(int j=m;j>=num[i];j--) { dp[j]=max(dp[j],dp[j-num[i]]+num[i]); } cout<<abs(sum-2*dp[m])<<endl; } return 0;}
阅读全文
0 0
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- LintCode-[容易] 211. 字符串置换
- Unity3d中3D Text对模型的穿透显示
- python-pandas的基本用法08
- 高级I/O函数
- 设计模式之命令模式
- UVA
- LeNet的详细网络结构
- Java线程同步
- 【PAT】【Advanced Level】1052. Linked List Sorting (25)
- poj 2425 A Chess Game
- NG机器学习week9 Recommender System
- thinkphp生成验证码
- JavaScript高级程序设计笔记 事件冒泡和事件捕获
- HTML5_CSS入门(内部样式、外部样式、内联样式、选择器)