算法競賽入門經典 突擊戰

算法競賽入門經典 突擊戰

/*
	Name: 突擊戰 
	Copyright: 劉汝佳 
	Author: Analyst 
	Date: 27/02/14 23:59
	Description: dev-cpp 5.5.3
*/
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

struct Job
{
	int j, b;
	bool operator < (const Job& x) const       //運算符重載。不要忘記const修飾符 
	{
		return j > x.j;       //由大到小排序 
	}
};
int main()
{
	int n, b, j, kase = 1;
	
	while (scanf("%d", &n) == 1 && n)
	{
		vector<Job> v;
		for (int i = 0; i < n; ++i)
		{
			scanf ("%d%d", &b, &j);
			v.push_back((Job){j,b});
		}
		sort(v.begin(), v.end());     //使用Job類自己的 < 運算符排序(大->小) 
		int s = 0;
		int ans = 0;
		
		for (int i = 0; i < n; ++i)
		{
			s += v[i].b;              //當前任務的開始執行時間 
			ans = max(ans, s+v[i].j); //更新執行任務完成時最晚時間 
		} 
		printf("Case %d: %d\n",kase++, ans);
	}
	return 0;
} 

ps:

1.注意重載sort排序,使之由大到小排序。

2.注意任務結束時間,選擇最長的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章