将一堆正整数分为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
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
#include <stack>
#include <cstdlib>
#include <iomanip>
#include <cmath>
#include <cassert>
#include <ctime>
#include <map>
#include <set>
using namespace std;
#pragma comment(linker, "/stck:1024000000,1024000000")
#define lowbit(x) (x&(-x))
#define max(x,y) (x>=y?x:y)
#define min(x,y) (x<=y?x:y)
#define MAX 100000000000000000
#define MOD 1000000007
#define pi acos(-1.0)
#define ei exp(1)
#define PI 3.1415926535897932384626433832
#define ios() ios::sync_with_stdio(true)
#define INF 0x3f3f3f3f
#define mem(a) ((a,0,sizeof(a)))
typedef long long ll;
int dp[10006],a[106],n;
int ans=0,pos;
int main()
{scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&a[i]);ans+=a[i];}memset(dp,0,sizeof(dp));pos=ans/2;for(int i=0;i<n;i++){for(int j=pos;j>=a[i];j--)dp[j]=max(dp[j],dp[j-a[i]]+a[i]);}int cnt=0;for(int i=0;i<=pos;i++)cnt=max(cnt,dp[i]);//printf("%d\n",cnt);printf("%d\n",abs(ans-cnt-cnt));return 0;
}

转载于:https://www.cnblogs.com/shinianhuanniyijuhaojiubujian/p/8949322.html

51Nod 1007 正整数分组(01背包)相关推荐

  1. 51Nod 1007 正整数分组 | DP (01背包)

    Input示例 5 1 2 3 4 5 Output示例 1 分析:2组的差最小,那么每一组都要接近sum/2,这样就转化成了普通的0 - 1背包了 #include <bits/stdc++. ...

  2. 51 Nod 1007 正整数分组【类01背包】

    1007 正整数分组 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 将一堆正整数分为2组,要求2组的和相差最小. 例如:1 2 3 4 5,将1 2 4分为1组, ...

  3. 51nod 1128 正整数分组 V2(二分)

    给出一个长度为N的正整数数组,不改变数组元素的顺序,将这N个数分为K组.各组中元素的和分别为S1,S2....Sk.如何分组,使得S1至Sk中的最大值最小? 例如:1 2 3 4 5 6分为3组,{1 ...

  4. 51NOD 2072 装箱问题 背包问题 01 背包 DP 动态规划

    有一个箱子容量为 V(正整数,0<=V<=20000),同时有 n 个物品(0<n<=30),每个物品有一个体积(正整数). 现在在 n 个物品中,任取若干个装入箱内,使得箱子 ...

  5. 01背包,完全背包,多重背包,分组背包的使用条件以及代码模板

    背包问题算是动态规划中的入门题目了,背包问题有很多种.背包九讲中讲的很清楚,我就不班门弄斧了,针对几种比较常见的背包问题,阐述一下它的使用前提和代码模板. 1.01背包问题 题目 有N 件物品和一个容 ...

  6. 01背包,完全背包,多重背包,混合背包,二维费用背包,分组背包,背包问题求方案数

    1 01背包问题 有 NNN 件物品和一个容量是 VVV 的背包.每件物品只能使用 一次. 第 iii 件物品的体积是 viv_ivi​,价值是 wiw_iwi​.求解将哪些物品装入背包,可使这些物品 ...

  7. 动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包,混合背包

    动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包 01背包 && 完全背包 && 分组背包 の 视频教程:https://www.bilibi ...

  8. 51Nod 1085 01背包

    01背包入门题,刚学完当写模板. 在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2--Wn(Wi为整数),与之相对应的价值为P1,P2--Pn(Pi为整数).求背包能够容纳的最大价 ...

  9. 01背包输出路径、完全背包、多重背包

    背包问题 一.01 Knapsack(输出路径- >选的物品) 二.完全背包 1.三重循环,极可能TLE,滚动数组优化后j逆向枚举 2.二重,优化消去变量k(没有特别厘清,但可以直接从完全背包角 ...

最新文章

  1. php虚拟键盘输入,[问题] bash下如何模拟键盘输入
  2. 处理顶点——使用索引移除冗余顶点
  3. 基于MFC SDI的图像处理程序(带效果图)
  4. SQL Server blocking session
  5. HDU 5691 Sitting in Line 状压dp
  6. JAVA入门级教学之(方法-题-3)
  7. Java集合系列:Vector解析
  8. ConcurrentHashMap深度分析(JDK 1.8版本)
  9. lvs基本概念、调度方法、ipvsadm命令及nat模型示例
  10. String课后作业
  11. 如何做一个让开发人员看得起的软件测试人员
  12. sql中判断日期大小_excel中text函数的方法,日期操作、数值转化,条件判断
  13. Flutter Web 打包并发布到Tomcat服务器上
  14. 转载:安卓Paint使用讲解
  15. C语言实现函数确定最大最小值
  16. chrome —— 登录账号
  17. Java利用TCP进行文件的传输
  18. mac通过跳板机对服务器上传下载文件
  19. 联想计算机机房怎么同传,电脑开机自动进入网络同传
  20. Android 将签名布局旋转90度,Android 自定义View手写签名

热门文章

  1. 震惊:菲律宾总统咧嘴冷笑视察惨剧!
  2. figure文本框乱码 matlab_Matlab给系统自动生成的窗体Figure1改名称
  3. fibonacci的几种实现及尾递归
  4. Numpy中矩阵对象
  5. c++经典书籍--Effective C++
  6. Eratosthenes筛选求质数
  7. MySQl笔记7:MySQL在线模拟平台汇总
  8. MySQL笔记14:常用命令
  9. 常考数据结构与算法:两个链表生成相加链表
  10. Mango 的组织重构