zoj 1880 - Tug of War
题目:有n个人分成两组,两组人数差不能超过1,找到两组的人重量之差的最小值。
分析:dp,二维01背包。
由于必须放在两个组中的一组,直接背包全部可到状态,
取出相差不超过 1的最接近 sum/2的值就可以。
说明:430ms。
。好慢啊。。
(2011-9-30 18:37)。
#include <stdio.h>
#include <stdlib.h>
#include <string.h> int f[ 52 ][ 22501 ];
int h[ 101 ]; int main()
{
int n,sum;
while ( scanf("%d",&n) != EOF && n != -1 ) {
sum = 0;
for ( int i = 1 ; i <= n ; ++ i ) {
scanf("%d",&h[ i ]);
sum += h[ i ];
} memset( f, 0, sizeof( f ) );
f[ 0 ][ 0 ] = 1;
for ( int i = 1 ; i <= n ; ++ i )
for ( int l = n/2+1 ; l > 0 ; -- l )
for ( int j = sum/2 ; j >= h[ i ] ; -- j )
if ( f[ l-1 ][ j-h[ i ] ] )
f[ l ][ j ] = 1; int move = sum/2;
while ( move ) {
if ( n%2 == 0 && f[ n/2+0 ][ move ] ) break;
if ( n%2 == 1 && f[ n/2+1 ][ move ] ) break;
if ( n%2 == 1 && f[ n/2-0 ][ move ] ) break;
-- move;
} printf("%d %d\n",move,sum-move);
}
return 0;
}
zoj 1880 - Tug of War的更多相关文章
- HDU-2576 Tug of War
http://poj.org/problem?id=2576 二维数组01背包的变形. Tug of War Time Limit: 3000MS Memory Limit: 65536K Tot ...
- 随机算法 poj 2576 Tug of War
Tug of War Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 8187 Accepted: 2204 Descri ...
- UVA - 10032 Tug of War (二进制标记+01背包)
Description Problem F: Tug of War A tug of war is to be arranged at the local office picnic. For the ...
- uva 10032 Problem F: Tug of War
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- BZOJ4124 : [Baltic2015]Tug of war
建立二分图,首先如果存在度数为$0$的点,那么显然无解. 如果存在度数为$1$的点,那么这个点的匹配方案固定,可以通过拓扑排序去掉所有这种点. 那么现在剩下的点度数都至少为$2$,因为左右点数相等,且 ...
- POJ2576 Tug of War 二维背包
题目大意 一群人拔河,给出每个人的重量,要求两队人数之差不超过1人,且每队总重量之差最小. 思路 选出严格总人数一半(或+1)的人为一队,在该队重量不超过所有人总重量一半的情况下,使其重量最大. 人数 ...
- poj 2576 Tug of War
还是神奇的随机算法,,(看视频说这是爬山法??) 其实就是把序列随机分成两半(我太弱,只知道random_shuffle),然后再每个序列里rand一个位置,x,y然后比较是不是交换之后是更优的. 然 ...
- 动态规划:POJ2576-Tug of War(二维费用的背包问题)
Tug of War Time Limit: 3000MS Memory Limit: 65536K Description A tug of war is to be arranged at the ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
随机推荐
- Unity笔记(3)自学第三天
学习记录: 脚本使用:
- 由DB2分页想到的,关于JDBC ResultSet 处理大数据量
最近在处理DB2 ,查询中,发现如下问题.如果一个查询 count(*),有几十万行,分页如何实现 select row_number() over (order by fid desc ) as r ...
- 本地调试hbase
需求说明 如果要本地调试Hbase程序,那么可以用本地连接集群的方式 配置文件 在maven里,配置文件cluster.properties放在target/classes里 cluster.prop ...
- 运用反射时报错java.lang.NoSuchMethodException,以解决,记录一下
问题:想调用service类中的私有方法时, Method target=clz.getMethod("say", String.class);用Class的getMethod报错 ...
- Protecting resources in iPhone and iPad apps
源码:https://github.com/lingzhao/EncryptedResourceDemo UPDATE: The example project has been updated to ...
- 模板TemplateRef
TemplateRef<void> <ng-template #模板名称></ng-template>
- php第二十六节课
会话购物车 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...
- Vue.js 安装
注意:vue.js 不支持 IE8 及其以下版本,学习前请保证你的浏览器兼容 ECMAScript 5,可访问 http://caniuse.com/#feat=es5 查看支持 ECMAScript ...
- 入门系列(一) 微信小程序简介
一.简介 1.目录结构 首先,我们使用微信公众平台提供的开发者工具,创建一个简单的小程序项目,观察项目的目录结构 不难看出,一个典型的微信小程序,通常包含一个描述整体的主体部分,以及一个描述页面的 p ...
- Word2Vec的基本使用
目录 1.建立模型 2.保存与加载模型 3.使用模型 gensim 是 Python 中一款强大的 自然语言处理工具,它包含了常见的模型,其中便有 Word2Vec 这一优秀的 词向量训练工具,可以使 ...