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

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示例
5
1
2
3
4
5
Output示例
1
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1007
分析:

本题要求两个正整数数组的和差,那么要使得两个和差最小,那么必定每个数组是越靠近sum/2的(就是和的中间点)

那么我们就可以把这道题目转化为简单的01背包了。

下面给出AC代码:
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 #define N 10010
 4 int a[N]; 
 5 int n;
 6 int dp[N];
 7 int  main(void)
 8 {    
 9      while(scanf("%d",&n)!=EOF)
10      {
11        int sum=0;
12        for(int i=1;i<=n;i++)
13        {
14              cin>>a[i];
15              sum+=a[i];//挑选出一些数字,是的越靠近sum/2,那么就是背包问题了 
16        }
17        memset(dp,0,sizeof(dp));
18        for(int i=1;i<=n;i++)
19                for(int j=sum/2;j>=a[i];j--)
20                    dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
21        cout<<abs((sum-dp[sum/2])-dp[sum/2])<<endl;
22      }
23       return 0;
24 }

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YTU 2924: 文件操作--二进制文件读入

2924: 文件操作--二进制文件读入 时间限制: 1 Sec 内存限制: 128 MB提交: 58 解决: 20题目描述 现有100名学生的姓名(name)、学号(num)、英语(English)、数学(Math)、语文(Chinese)成绩存储在一个二进制文件student.dic中(姓名用char[20]&#xff0c;学号和各科成绩用int存储…

oracle 9.2.0.4,CentOS 4.7 安装Oracle 9.2.0.4的一些问题

#vi/etc/sysconfig/iptables&#xff0c;增加如下-A INPUT -p udp -s 0/0 -d 0/0 --dport 177 -j ACCEPT-A INPUT -p tcp -s 0/0 -d 0/0 --dport telnet -j ACCEPT-A INPUT -p tcp -s 0/0 -d 0/0 --dport ssh -j ACCEPT-A INPUT -p tcp -s 0/0 -d 0/0 --dport login -j ACCEPT-…

《机电传动控制》----学习笔记六

《机电传动控制》与其他学科的联系 1、《液压传动与气压传动》中提到的液压控制阀中的电液伺服阀与《机电传动控制》中的控制电动机里的伺服电机有着密切的联系&#xff0c;都要求我们对伺服系统有着很好的理解。 2、《电路理论》中电机作为独立的一章&#xff0c;讲到了用向量…

Oracle Imp and Exp (导入和导出) 数据 工具使用

Oracle 提供两个工具imp.exe 和exp.exe分别用于导入和导出数据。这两个工具位于Oracle_home/bin目录下。 导入数据exp 1 将数据库ATSTestDB完全导出,用户名system 密码123456 导出到c:\export.dmp中 exp system/123456ATSTestDB filec:\export.dmp fully 其中ATSTestDB为数据库…

[Oracle][Corruption]究竟哪些检查影响到 V$DATABASE_BLOCK_CORRUPTION

根据 471716.1&#xff0c;11g 之后&#xff0c;下列动作如果遇到坏块&#xff0c;都会输出记录到 V$DATABASE_BLOCK_CORRUPTION。- Analyze table .. Validate structure- CTAS(Create table as Select)- Export另外&#xff0c;这些也会记录的&#xff1a;RMAN > Vali…

oracle使用loop将增加十天,使用loop循环操作DML语句

---loop循环&#xff1a;--创建测试表&#xff1a;suxingPROD>create table total3(2 t1 number(8),3 t2 number(8),4 cr date default sysdate);Table created.#测试表已经创建。--查看表中原来的数据&#xff1a;suxingPROD>select * from total3;T1 T2 CR-…

iOS富文本

iOS富文本 背景&#xff1a;前些天突然想做一个笔记本功能&#xff0c;一开始&#xff0c;觉得挺简单的呀&#xff0c;一个UITextView,网络缓存也不干了&#xff0c;直接本地NSUserDefault存储&#xff0c;然后完事了&#xff0c;美工&#xff0c;弄几张好看的图片&#xff0c;…

SQL编程题-----1

首先&#xff0c;题目给出这个数据库表格 要求写出SQL语句使之变成如下表格 解决方法&#xff1a; SELECT t1.Rq,t1.胜,t2.负 FROM //t1和t2是自己命的新表格的名字 (SELECT Rq,COUNT(*) AS 胜 //As 胜意思是输出结果时列名为”胜“FROM testtableWHERE Sh…

maven设置jdk版本

两种方式&#xff1a;一、可以修改 MAVEN 的 setting.xml 文件&#xff0c;统一修改。<profiles> <profile> <id>jdk-1.6</id> <activation> <activeByDefault>true</activeByDefault>…

获取系统时间出错oracle-,oracle 获取系统时间(转)

Oracle中如何获取系统当前时间select to_char(sysdate,yyyy-mm-dd hh24:mi:ss) from dual;ORACLE里获取一个时间的年、季、月、周、日的函数select to_char(sysdate, yyyy ) from dual; --年select to_char(sysdate, MM ) from dual; --月select to_char(sysdate, dd ) f…

PHP环境搭建

以Apache模块运行PHP环境搭建方法 下载Apache 注意&#xff1a;在http://www.apachelounge.com/ 下载Apache&#xff0c;因为该网站提供的Apache是通过更高版本的VC编译器编译的。由于接下来我下载的PHP版本是VC11的&#xff0c;所以下载的Apache版本也是基于VC11的。 download…

Java语言中的-----访问修饰符

day04 Java语言中的----访问修饰符一、访问修饰符概述&#xff1a;访问修饰符就是对变量或者是方法或者是类的一个修饰&#xff0c;通过修饰以后实现一些必要的权限&#xff0c;主要是说明类成员如何被使用的作用。二、访问修饰符1、访问修饰符有哪些&#xff1f;访问修饰符总共…

六角填数---第五届蓝桥杯

/** 如图【1.png】所看到的六角形中&#xff0c;填入1~12的数字。使得每条直线上的数字之和都同样。图中&#xff0c;已经替你填好了3个数字&#xff0c;请你计算星号位置所代表的数字是多少&#xff1f;请通过浏览器提交答案。不要填写多余的内容。*/ public class 六角填数 {…

linux命令编写,编写简单的linux命令

8种机械键盘轴体对比本人程序员&#xff0c;要买一个写代码的键盘&#xff0c;请问红轴和茶轴怎么选&#xff1f;又到了周四分享环节&#xff0c;鉴于最近在看linux编程实践&#xff0c;所以就的讲一下如何编写一个简单的who命令。PPTManual PageManual Page 也就是大家常用的m…

如何在ASP.NET 5和XUnit.NET中进行LocalDB集成测试

今天继续昨天的话题——单元测试&#xff0c;不过是在ASP.NET 5中的单元测试。 在当前的Visual Studio 2015 CTP6中&#xff0c;MSTest是不支持对ASP.NET 5项目进行单元测试的。因而&#xff0c;要对ASP.NET 5进行单元测试&#xff08;或集成测试&#xff09;&#xff0c;就需要…

mysql数据库详解(续一)

第三节 配置MYSQL数据库配置mysql数据库通常通过命令行选项、配置文件、和环境变量来进行&#xff0c;并且优先顺序也是命令行最高&#xff0c;环境变量优先级最低。1、配置文件定位mysql的配置文件可以在以下四个位置&#xff1a;(按照查找顺序)1、/etc/my.cnf2、DATADIR/my.c…

ImageLoader设置圆形图片

//自定义MyApplication类&#xff0c;需要在列表清单中设置 <application android:name"com.ce.image.MyApplication"//将类的名称赋给这个application package com.ce.image;import com.nostra13.universalimageloader.core.DisplayImageOptions;import …

用户模式 内核模式 linux,linux – “内核模式”和“用户模式”硬件...

内核模式和用户模式是硬件功能,特别是处理器的功能.专为中高端系统(PC,功能手机,智能手机,除最简单的网络设备之外的所有系统……)设计的处理器都包含此功能.内核模式可以使用不同的名称&#xff1a;管理程序模式,特权模式等.在x86(PC中的处理器类型)中,它被称为“ring 0”,用户…

SANS研究所:7大最危险的攻击技术介绍

本文讲的是SANS研究所&#xff1a;7大最危险的攻击技术介绍&#xff0c;很显然&#xff0c;网络攻击威胁已经从理论走入现实生活&#xff0c;无论是个人、企业还是国家重要基础设施都处在日益严峻的威胁之中。本周三&#xff08;2月15日&#xff09;在加利福尼亚州旧金山举办的…

第六周作业

上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些&#xff0c; 各有什么优缺点&#xff1f; &#xff08;提示&#xff1a;搜索一下Microsoft TFS、GitHub、Trac、Bugzilla、Rationale&#xff0c;Apple XCode&#xff09;? 答&#xff1a;目前流行的源程序版…