分析:还是贪心算法的一个应用。需要考虑到的是,将完成时间长的任务提前安排,因此还是需要排序。
>> vector<数据类型> 数组名 //声明不定长数组
在vector中排序使用vector< int > vi ;vi.push_back(1);vi.push_back(3);vi.push_back(0);sort(vi.begin() , vi.end()); /// /从小到大reverse(vi.begin(),vi.end()); /// 从大到小
push_back()函数存在于vector头文件中,其作用是在vector的末尾添加新的元素。
sort()常用的排序函数,默认从小到大排序。
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
struct Job
{
int j, b;
bool operator < (const Job & x) 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());
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;
}