51nod 1007 正整数分组(类背包)
来源:互联网 发布:python 字典转成list 编辑:程序博客网 时间:2024/06/04 23:07
1007 正整数分组
基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题
收藏
关注
将一堆正整数分为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示例
512345
Output示例
1
这个题可以转换成背包问题。
dp[i][j]表示从前i个数中选择若干个数,总和不超过j的时候能得到的最大的值。
状态转移方程和背包的类似。
#include<iostream>#include<cstring>#include<cstdio>#define INF 2<<30#define N 10000+10using namespace std;typedef long long ll;int dp[110][N];int a[N];int main(){ int n; cin>>n; int sum=0; for(int i=1; i<=n; i++) cin>>a[i],sum+=a[i]; memset(dp,0,sizeof(dp)); for(int i=1; i<=n; i++) for(int j=0; j<=sum/2; j++) if(j<a[i]) dp[i][j]=dp[i-1][j]; else dp[i][j]=max(dp[i-1][j],dp[i-1][j-a[i]]+a[i]); cout<<sum-2*dp[n][sum/2]<<endl; return 0;}
同样的,这个题也可以使用一维数组来做,减少空间复杂度。
#include<iostream>#include<cstring>#include<cstdio>#define INF 2<<30#define N 10000+10using namespace std;typedef long long ll;int dp[N];int a[N];int main(){ int n; cin>>n; int sum=0; for(int i=1; i<=n; i++) cin>>a[i],sum+=a[i]; memset(dp,0,sizeof(dp)); for(int i=1; i<=n; i++) for(int j=sum/2; j>=a[i]; j--) dp[j]=max(dp[j],dp[j-a[i]]+a[i]); cout<<sum-2*dp[sum/2]<<endl; return 0;}
阅读全文
0 0
- 51nod 1007 正整数分组 (类01背包问题)
- 51nod 1007 正整数分组(类背包)
- 51nod 1007 正整数分组 01背包
- 51Nod 1007 正整数分组 01背包
- 51nod 1007 正整数分组【01背包】
- 51nod 1007 正整数分组(01背包)
- 51nod 1007 正整数分组 01背包
- 51nod 1007 正整数分组(背包)
- 51Nod-正整数分组(01背包)
- 51nod 1007 正整数分组(平分) 01背包
- 【51Nod】1007 - 正整数分组(01背包)
- 51nod 1007 正整数分组(01背包)
- 51 NOD 1007 正整数分组(0-1背包)
- 51nod 1007 正整数分组(背包/dp)
- 51Nod 1007 正整数分组(01背包的变形)
- 51Nod 1007 正整数分组(01背包变形)
- 51nod 1007 正整数分组 背包思路题
- 51Nod 1007 正整数分组 0-1背包
- bzoj2467 [中山市选2010]生成树
- 【jquery】Uncaught ReferenceError: xxxx is not defined
- ALLEGRO学习之如何出GERBER
- 适配器模式-对象,类,接口三种适配器
- 分布式,java,高并发系统设计,大神学习路线
- 51nod 1007 正整数分组(类背包)
- swift3.0 如何优雅的自定义tableViewcell,最简单的自定义cell,闭包事件传递,代码封装。
- antd mobile(八) webpack通过别名取代路径引用
- 文件管理
- 论文见解之SRN: Side-output Residual Network for Object Symmetry Detection in the Wild
- js判断浏览器类型
- 高性能网站架构设计之缓存篇(7)- Redis哨兵sentinel机制用法与说明
- HTML学习经验总结
- 微信统一下单_公众号支付_扫码支付