hdu1171

来源:互联网 发布:tplink tl wn725n mac 编辑:程序博客网 时间:2024/06/06 08:29
//又是一个背包题目啊,这个题目并不难,自己还是要多想想,把F【】数组的数据开大点  开小了容易wa
#include <stdio.h>#include <string.h>int max(int a,int b){if(a>b)return a;elsereturn b;}int f[500005];int main(){int n,m,v[5005],i,j,k,cnt,a,sum;while(scanf("%d",&n)!=EOF){if(n<=0)break; memset(f,0,sizeof(f));cnt=0;sum=0;    for(i=0;i<n;i++){ scanf("%d%d",&a,&m);   for(j=0;j<m;j++)   {                    v[cnt++]=a;  sum=sum+a;   } } for(i=0;i<cnt;i++) { for(j=sum/2;j>=0;j--) { if(j>=v[i]) {   f[j]=max(f[j],f[j-v[i]]+v[i]); } } } printf("%d %d\n",sum-f[sum/2],f[sum/2]);}return 0;}

0 0
原创粉丝点击