UVa 11729

来源:互联网 发布:linux csh改为bash 编辑:程序博客网 时间:2024/06/04 00:31

题意: 给n个士兵分配任务,用b表示分配时间,j表示任务完成需要的时间,分配任务是串行的,执行任务是并行的,问算上总共时间需要最小的方案

思路:



代码如下:

#include <iostream>#include <fstream>#include <algorithm>#include <vector>using namespace std;class Job{private:int b, j;public:Job(int b, int j){this->b = b;this->j = j;}bool operator < (const Job& other) const{return j > other.j;}friend class Solution;};class Solution{public:int calcTime(vector<Job> v){sort(v.begin(), v.end());int ans = 0;int s = 0;for (size_t i = 0; i < v.size(); i++){s += v[i].b;ans = max(ans, s + v[i].j);}return ans;}};Solution solver;int main(){#ifndef ONLINE_JUDGEifstream fin("f:\\OJ\\uva_in.txt");streambuf *old = cin.rdbuf(fin.rdbuf());#endifint n;int kase = 1;while (cin >> n, n){vector<Job> v;for (int i = 0; i < n; i++){int b, j;cin >> b >> j;Job job{ b, j };v.push_back(job);}int ans = solver.calcTime(v);cout << "Case " << kase++ << ": " << ans << endl;}#ifndef ONLINE_JUDGEcin.rdbuf(old);#endifreturn 0;}


原创粉丝点击