Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

百题留念!!!水过100。哈哈。这道题得感谢一位同仁的博客啊

Posted by wentianxiaokai at 2010-08-19 13:26:27 on Problem 1276
我是看了这位同仁的博客之后AC的。http://duanple.blog.163.com/blog/static/709717672008101985128651/。
贴下本人的代码:
#include <stdio.h>
#include <string.h>
int cash,n;
int pay[11],num[11],flag[100001],used[100001][11];
int main(int argc, char *argv[])
{
	int i,j,k,p,q,m,max;
	while(scanf("%d",&cash)!=EOF)
	{
		memset(flag,0,sizeof(flag));
		memset(used,0,sizeof(used));
		flag[0]=1;
		scanf("%d",&n);
		k=0;
		for(i=0;i<n;i++)
			scanf("%d%d",&num[i],&pay[i]);
		flag[0]=1;
		for(i=0;i<n;i++)
		{
			for(k=cash;k>=0;k--)
			{
				if(!flag[k])
					continue;
				for(j=0;j<=num[i];j++)
				{
					p=j*pay[i];
					if(k+p>cash)
						break;
					if(flag[k+p] && used[k+p][i] <j)
						break;
					flag[k+p]=1;
					used[k+p][i]=j;
				}				
			}
		}
		for(i=cash;i>=0;i--)
			if(flag[i])
				break;
		printf("%d\n",i);
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator