51Nod 1099 任务执行顺序 (贪心)

 1 #include <iostream>
 2 #include <algorithm>
 3 using namespace std;
 4 
 5 const int maxn =100000+5;
 6 struct node{
 7     int r, q;
 8 }a[maxn];
 9 
10 bool cmp(node x, node y){
11     if(x.r - x.q != y.r - y.q)
12         return (x.r-x.q) > (y.r-y.q);
13     return x.r > y.r;
14 }
15 
16 int main()
17 {
18     int n;
19     cin >> n;
20     for(int i =0 ;i<n;i++){
21         cin >> a[i].r >> a[i].q;
22     }
23     sort(a,a+n,cmp);
24     int ans = 0;            //总空间
25     int sum = 0;            //剩余的空间
26     for(int i = 0;i < n;i++){
27         if(sum < a[i].r){
28             ans += a[i].r - sum;
29             sum = a[i].r;
30         }
31         sum -= a[i].q;      //执行后剩下的空间
32     }
33     cout << ans << endl;
34     return 0;
35 }

 

posted @ 2018-05-05 19:49  ouyang_wsgwz  阅读(132)  评论(0编辑  收藏  举报