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

1742老是WA, 不知道哪儿错了, 高人帮忙看一下, 先谢了

Posted by Michaelgs at 2006-10-06 15:56:01
//ACM ICPC 2006 Coins
//by Michael 
//program for nothing

#include <vector>
#include <deque>
#include <list>
#include <set>
#include <map>
#include <string>
#include <bitset>
#include <algorithm>
#include <functional>
#include <utility>
#include <cstdlib>
#include <cctype>
#include <ctime>
#include <cstdio>
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
typedef long long llong;

int size;
int maxPrize;
int reach[100002];
vector<int> coins;
vector<int> number;
#define INF 0x0F0F0F0F

int calculate()
{
	memset(reach, 0x0F, sizeof(reach) );
	int most = 0;
	int result = 0;
	int base = 1;                   //区分第几个coin
	reach[0] = 0;
	for(int i = 0; i < size; ++i)
	{
		most = min(maxPrize, most+coins[i]*number[i]);
		for(int j = coins[i]; j <= most; ++j)
			if ( reach[j] == INF )
			{
				if ( reach[j-coins[i]] < INF )
				{
					if ( reach[j-coins[i]] < base )
					{
						reach[j] = base;
						++result;
					}
					else if ( reach[j-coins[i]] < base+number[i]-1 )
					{
						reach[j] = 1+reach[j-coins[i]];
						++result;
					}
				}
			}
		base += number[i];
	}
	return result;
}

int main()
{
	cin>>size>>maxPrize;
	while ( size || maxPrize )
	{
		int t;
		for(int i = 0; i < size; ++i)
		{
			cin>>t;
			coins.push_back(t);
		}
		for(int i = 0; i < size; ++i)
		{
			cin>>t;
			number.push_back(t);
		}
		cout<<calculate()<<endl;
		cin>>size>>maxPrize;
	}
	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