首页 > 其他 > 详细

HDU 1171 Big Event in HDU

时间:2014-01-22 21:19:50      阅读:407      评论:0      收藏:0      [点我收藏+]

题解:将背包总量分为两份,之后多重背包即可

bubuko.com,布布扣
#include <cstdio>
#include <cstring>
int f[300000],w[1000],t[1000];
int main()
{
    int n;
    while(scanf("%d",&n),n>=0)
    {
        int v=0;
        for(int i=1; i<=n; i++){
            scanf("%d%d",&w[i],&t[i]);
            v+=w[i]*t[i];
        }
        memset(f,0,sizeof f);
        for(int j=1; j<=n; j++)
        for(int k=1; k<=t[j]; k++)
        for(int i=v/2; i>=k*w[j]; i--)
        if (f[i-w[j]]+w[j]>f[i]) f[i]=f[i-w[j]]+w[j];
        printf("%d %d\n",v-f[v/2],f[v/2]);    
    }
    return 0;
}
bubuko.com,布布扣

HDU 1171 Big Event in HDU

原文:http://www.cnblogs.com/forever97/p/3529817.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!