临时再加个。

来源:互联网 发布:东三环java培训 编辑:程序博客网 时间:2024/05/01 23:05
#include<bits/stdc++.h>//hdu_oj 1171(01背包)using namespace std;typedef long long ll;const int N=5000+50;int cost[N],f[N*50];int main(){    int n;    while(scanf("%d",&n)&&n>0)    {        memset(f,0,sizeof(f));        int k=1,sum=0;        for(int i=0;i<n;i++)        {            int a,b;            cin>>a>>b;            sum+=a*b;            while(b--)            {                cost[k++]=a;            }        }        for(int i=1;i<k;i++)         for(int j=sum/2;j>=cost[i];j--)           f[j]=max(f[j],f[j-cost[i]]+cost[i]);        printf("%d %d\n",sum-f[sum/2],f[sum/2]);    }    return 0;}

0 0
原创粉丝点击