#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
int i, j, temp, sum, a, b, n, dp[250005], v[5005];
while(~scanf("%d", &n), n>=0)
{
memset(dp, 0, sizeof(dp));
sum=0;temp=0;
for(i=0;i<n;i++)
{
scanf("%d%d", &a, &b);
while(b--)
{
v[temp++]=a;
sum+=a;
}
}
for(i=0;i<temp;i++)
for(j=sum/2;j>=v[i];j--)
dp[j]=max(dp[j], dp[j-v[i]]+v[i]);
printf("%d %d\n", sum-dp[sum/2], dp[sum/2]);
}
return 0;
}
HDU 1171 Big Event in HDU……(01背包 + 思维)
最新推荐文章于 2019-03-18 20:48:45 发布