您的位置:首页 > 其它

hdu 1171 Big Event in HDU

2011-11-07 10:14 531 查看
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1171

简单的多重背包。。开始一直RUNtime. 搞不懂。。为什么要开那么大。。。

= =!

下面是AC代码:

#include<iostream>
#include<cstring>
using namespace std;
#define N 60
int a[100000];
int v
,num
;
int main()
{
	int n,i,j,k;
	int sum;
 
	while(1)
	{
		cin>>n;
		if(n<0)
			break;
		else
		{
			memset(a,0,sizeof(a));
			sum=0;
			a[0]=1;
			for(i=1;i<=n;i++)
			{
				cin>>v[i]>>num[i];
				sum+=num[i]*v[i];
			}
			for(i=1;i<=n;i++)
			{
				for(j=num[i];j>=1;j--)
				{
					for(k=sum/2;k>=j*v[i];k--)
						if(a[k-j*v[i]]==1)
							a[k]=1;
				}
			}

			for(i=sum/2;i>=0;i--)
				if(a[i]==1)
					break;

			printf("%d %d\n",sum-i,i);

		

		}
	}
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: