51nod 正整数分组 01背包
来源:互联网 发布:淘宝申请退款会不退吗 编辑:程序博客网 时间:2024/06/13 21:32
1007 正整数分组
将一堆正整数分为2组,要求2组的和相差最小。
例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的。
Input
第1行:一个数N,N为正整数的数量。
第2 - N+1行,N个正整数。
(N <= 100, 所有正整数的和 <= 10000)
Output
输出这个最小差
Input示例
5
1
2
3
4
5
Output示例
1
题解:
刚开始没看出来是01背包,看了相关讨论才知道,这是质量与价值相等的01背包。
分成两组,为了使两组差值最小,尽量使两组和靠近sum/2;
可知sum1>=sum/2 sum2<=sum/2
求出一个sum2即可,总数减去sum2就是sum1,再减去sum1就是ans
代码:
#include <bits/stdc++.h>using namespace std;int a[105];int main(){ int N; cin>>N; int sum=0; for(int i=1;i<=N;i++) { cin>>a[i]; sum+=a[i]; } int c=sum/2; int f[105][10005]; for(int i=1;i<=N;i++) for(int j=0;j<=c;j++) { f[i][j]=(i==1?0:f[i-1][j]); if(j>=a[i]) f[i][j]=max(f[i][j],f[i-1][j-a[i]]+a[i]); } int ans = sum-2*f[N][c]; cout<<ans<<endl; return 0;}
阅读全文
0 0
- 51nod 1007 正整数分组 01背包
- 51Nod 1007 正整数分组 01背包
- 51nod 1007 正整数分组【01背包】
- 51nod 1007 正整数分组(01背包)
- 51nod 1007 正整数分组 01背包
- 51Nod-正整数分组(01背包)
- 51nod 正整数分组 01背包
- 51Nod--正整数分组--01背包问题
- 51Nod 1007 正整数分组(01背包的变形)
- 51nod 1007 正整数分组 (类01背包问题)
- 51Nod 1007 正整数分组(01背包变形)
- 51nod-正整数分组问题(基础方程DP-01背包)
- 51nod 1007 正整数分组(平分) 01背包
- 【51Nod】1007 - 正整数分组(01背包)
- 51nod 1007 正整数分组(01背包)
- 51Nod-正整数分组(01背包变形)
- 51nod 1007 正整数分组(背包)
- 51nod-正整数分组
- hpuoj【1200】我说你猜【输入输出格式要求】
- VS启动白屏
- Large Division LightOJ
- 程序设计竞赛小技巧
- webserver soap wsdl 整理运用
- 51nod 正整数分组 01背包
- 线性判别分析(Linear discriminant analysis)
- 六、STL的数值计算---数组(向量)运算---数组子集类-slice类和slice_array类模板
- Fy's dota2
- VINS 代码学习(一)--feature_tracker 代码
- 使用Apache中的HttpClient的实例CloseableHttpClient进行http请求
- 微信小程序商店域名由wxapp.dreawer.com永久更换为:store.dreawer.com
- 创建Bean的三种方式 在大多数情况下,Spring容器直接通过new关键字调用构造器来创建Bean实例,而class属性指定Bean实例的实现类,但这不是实例化Bean的唯一方法。实际上,Sprin
- servlet request getHeader(“x-forwarded-for”) 获取真实IP