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

被打败了,贴个没有过的代码吧,请教高手们还有很么可以优化的地方么,还是因为用了stl所以慢

Posted by 1083_3 at 2006-10-28 00:51:07 on Problem 2392
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
struct Three
{
	int first, second, third;
	Three(const int &f, const int &s, const int &t )
	{
		first = f;
		second = s;
		third = t;
	}
};
struct Three_Comp       
{     
	bool operator() (Three &op1, Three &op2) const
	{
		return op1.second < op2.second;   
    }   
};   

int main()
{
	int k;
	cin >> k;
	int i;
	vector<Three> h;
	h.clear();
	int h_i, a_i, c_i;
	for( i = 0; i < k; i++ )
	{
		cin >> h_i >> a_i >> c_i;
		h.push_back(Three(h_i,a_i,c_i));
	}
	sort(h.begin(), h.end(), Three_Comp());
	bool bucket[40001];
	memset(bucket,0,sizeof(bucket));
	vector<int> height;
	bucket[0] = true;
	height.push_back(0);
	int max = 0;
	for( i = 0; i < h.size(); i++ )
	{
		int t = height.size();
		for( int j = 0; j < t; j++ )
		{
			if ( height[j] + h[i].first > h[i].second )
				break;
			for( int l = 1; l <= h[i].third; l++ )
			{
				int temp = height[j] + h[i].first * l;
				if ( temp <= h[i].second )
				{
					if ( bucket[temp] == false )
					{
						bucket[temp] = true;
						height.push_back(temp);
						if ( temp > max )
							max = temp;
					}
				}
				else
					break;
			}
		}		
	}
	cout << max << endl;
	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