题目:有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的更多相关文章

  1. HDU-2576 Tug of War

    http://poj.org/problem?id=2576 二维数组01背包的变形. Tug of War Time Limit: 3000MS   Memory Limit: 65536K Tot ...

  2. 随机算法 poj 2576 Tug of War

    Tug of War Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 8187   Accepted: 2204 Descri ...

  3. 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 ...

  4. uva 10032 Problem F: Tug of War

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  5. BZOJ4124 : [Baltic2015]Tug of war

    建立二分图,首先如果存在度数为$0$的点,那么显然无解. 如果存在度数为$1$的点,那么这个点的匹配方案固定,可以通过拓扑排序去掉所有这种点. 那么现在剩下的点度数都至少为$2$,因为左右点数相等,且 ...

  6. POJ2576 Tug of War 二维背包

    题目大意 一群人拔河,给出每个人的重量,要求两队人数之差不超过1人,且每队总重量之差最小. 思路 选出严格总人数一半(或+1)的人为一队,在该队重量不超过所有人总重量一半的情况下,使其重量最大. 人数 ...

  7. poj 2576 Tug of War

    还是神奇的随机算法,,(看视频说这是爬山法??) 其实就是把序列随机分成两半(我太弱,只知道random_shuffle),然后再每个序列里rand一个位置,x,y然后比较是不是交换之后是更优的. 然 ...

  8. 动态规划:POJ2576-Tug of War(二维费用的背包问题)

    Tug of War Time Limit: 3000MS Memory Limit: 65536K Description A tug of war is to be arranged at the ...

  9. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

随机推荐

  1. Spring(二) -- 春风拂面之 核心 AOP

    ”万物皆对象“是面向对象编程思想OOP(Object Oriented Programming) 的最高境界.在面向对象中,我一直将自己(开发者)放在一个至高无上的位置上,可以操纵万物(对象),犹如一 ...

  2. [ TJOI 2010 ] 打扫房间

    \(\\\) Description 给出一个\(N\times M\) 的网格,一些格子是污点,求是否能用多个封闭的环路覆盖所有不是污点的格点. 封闭的环路覆盖的含义是,每条路径都必须是一个环,且每 ...

  3. [ USACO 2017 FEB ] Why Did the Cow Cross the Road III (Gold)

    \(\\\) \(Description\) 给定长度为\(2N\)的序列,\(1\text ~N\)各出现过\(2\)次,\(i\)第一次出现位置记为\(a_i\),第二次记为\(b_i\),求满足 ...

  4. lua_protobuf

    http://www.cocoachina.com/bbs/read.php?tid-227404.html

  5. post登录资料备份

    # coding=utf-8 import urllib import hashlib import http.client import http.cookiejar import http.coo ...

  6. 学习RFT之:TestObject.find方法的了解与使用

    第一部分:了解TestObject.find 一.TestObject.find方法的作用 1.测试过程中动态的找到测试对象(控件.标签等),使我们的测试用例不再依赖RFT自带的对象地图(Object ...

  7. C/C++ struct定义、声明、对齐方式

    一.定义/声明方式 第一种:仅有结构体名,不定义/声明变量 struct MyStruct {  int i:     char a[10];     double b; }:第二种:有结构体名,并声 ...

  8. 11servlet接口

    11.servlet接口-2018/07/23 1.servlet 是一个接口,需要导包javax.servlet.Servlet; 第一种编写一个servlet程序的方法 写一个Java类,实现se ...

  9. pygame 方块随机飞舞动画

    import pygame import random # default WIDTH=1280 HEIGHT=1060 FPS=60 sum=0 # set color WHITE=(255,255 ...

  10. python lambda简易使用

    基本格式 lambda 变量名:函数表达式 ①直接使用 f=lambda x:x**2 f(3) ②设置函数列表 l=[lambda x:x**2, lambda x:x**3, lambda x:x ...