关闭

HDU 1171 Big Event in HDU

69人阅读 评论(0) 收藏 举报
分类:

Problem Description

Nowadays, we all know that Computer College is the biggest department in HDU. But, maybe you don’t know that Computer College had ever been split into Computer College and Software College in 2002. 
The splitting is absolutely a big event in HDU! At the same time, it is a trouble thing too. All facilities must go halves. First, all facilities are assessed, and two facilities are thought to be same if they have the same value. It is assumed that there is N (0

Input

Input contains multiple test cases. Each test case starts with a number N (0 < N <= 50 – the total number of different facilities). The next N lines contain an integer V (0

Output

For each case, print one line containing two integers A and B which denote the value of Computer College and Software College will get respectively. A and B should be as equal as possible. At the same time, you should guarantee that A is not less than B.

Sample Input


10 1 
20 1 

10 1 
20 2 
30 1 
-1

Sample Output

20 10 
40 40

题目大意:

输入一个数a,表示接下来有a种物品,数组m和n中分别存储物品的价值和个数,把这些物品分配给A和B,使两个人得到的价值尽可能相等,不相等的情况要保证A得到的价值大于B得到的价值。

C++

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int m[1005],n[1005];
int dp[250010];
int main()
{
    int a,b,c,d,e,f;
    while(cin>>a)
    {
        if(a<0)
            break;
        f=0;
        memset(dp,0,sizeof(dp));
        for(b=0;b<a;b++)
        {
            scanf("%d %d",&m[b],&n[b]);
            f=f+m[b]*n[b];
        }
        e=f/2;
        for(b=0;b<a;b++)
        {
            for(c=0;c<n[b];c++)
            {
                for(d=e;d>=m[b];d--)
                {
                    dp[d]=max(dp[d],dp[d-m[b]]+m[b]);
                }
            }
        }
        printf("%d %d\n",f-dp[e],dp[e]);
    }
    return 0;
}




1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

杭电ACM hdu 1171 Big Event in HDU 解题报告(母函数)

出处: Problem Description Nowadays, we all know that Computer College is the biggest department in HDU...
  • u012077163
  • u012077163
  • 2013-11-30 16:36
  • 1876

HDU3339 In Action(最短路+01背包)

In Action Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota...
  • yeguxin
  • yeguxin
  • 2014-09-23 20:33
  • 1041

HDU 2053 Switch Game(开灯问题,唯一分解定理)

Switch Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To...
  • hurmishine
  • hurmishine
  • 2016-05-08 19:23
  • 2050

杭电1171 Big Event in HDU(母函数+多重背包解法)

Big Event in HDU Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other...
  • u013634213
  • u013634213
  • 2014-08-24 02:02
  • 944

母函数之Big Event in HDU hdoj 1171

/* Big Event in HDU Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O...
  • lh__huahuan
  • lh__huahuan
  • 2014-08-11 19:18
  • 310

HDOJ--1171--Big Event in HDU

Big Event in HDU Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other...
  • gui951753
  • gui951753
  • 2015-10-23 17:42
  • 219

HDOJ-1171-Big Event in HDU 解题报告

普通母函数。题意:有最多50种不同价值的机器,每种机器的价值不超过50并且数量不超过100,现在要把这些机器分成A和B两部分,使两部分机器的价值尽可能相等且A的价值不能够小于B。      ...
  • JZQT_T
  • JZQT_T
  • 2015-05-21 18:56
  • 404

HDOJ 1171 Big Event in HDU解题报告

//错误的解答 //#include #include using namespace std; bool money[250002]; unsigned value[52]; unsigne...
  • xinhanggebuguake
  • xinhanggebuguake
  • 2011-07-31 22:43
  • 580

hdoj 1171 Big Event in HDU(母函数/多重背包)

题意很简单,n种物品,每个物品对应一个价值和数量。让你竟可能的分成相等的两份。 可以设背包容量为sum/2用多重背包解决。 也可以用母函数来解决,计算能组成的最接近sum/2的值。 母函数...
  • CillyB
  • CillyB
  • 2016-10-26 21:13
  • 236

Big Event in HDU 【HDOJ-1171-母函数】

Big Event in HDU Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others...
  • Holyang_1013197377
  • Holyang_1013197377
  • 2014-09-13 21:53
  • 410
    个人资料
    • 访问:15428次
    • 积分:1446
    • 等级:
    • 排名:千里之外
    • 原创:124篇
    • 转载:24篇
    • 译文:0篇
    • 评论:0条