HDU 1171 Big Event in HDU

来源:互联网 发布:微商加粉软件免费下载 编辑:程序博客网 时间:2024/06/06 03:12

//加油!

#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<string.h>using namespace std;const int maxn = 250000 + 5;int dp[maxn];int cnt[5000+5];int main(){    int n;    while(scanf("%d", &n) == 1 && n > 0)    {        int a,b;        int k = 0;        int sum = 0;        memset(dp,0,sizeof(dp));        memset(cnt,0,sizeof(cnt));        while(n--)        {            scanf("%d%d", &a, &b);            while(b--)            {                cnt[k++] = a;                sum += a;            }        }        for(int i = 0; i <k; ++i)            for(int j = sum/2; j >= cnt[i]; --j)                dp[j] = max(dp[j], dp[j-cnt[i]] + cnt[i]);        cout << sum - dp[sum/2] << " " << dp[sum/2] << endl;    }    return 0;}


0 0
原创粉丝点击