码迷,mamicode.com
首页 > 编程语言 > 详细

51nod 1099 任务执行顺序 (贪心算法)

时间:2016-08-12 13:12:28      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

题目:传送门

题意:中文题。

题解:r[i]-o[i]值大的先进行。反证法:如果大的后进行,会导致空间增大,所以一定大的是先进行。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
struct sa
{
    ll r,o,c;
} data[100005];
bool cmp(sa x,sa y) //注意这个排序方式 差值大的先进行
{
    return x.c>y.c;
}
int main()
{
    ll n;
    while(cin>>n)
    {
        for(int i=0; i<n; i++)
        {
            cin>>data[i].r>>data[i].o;//注意(O[i]<R[i])  这个很重要
            data[i].c=data[i].r-data[i].o;
        }
        sort(data,data+n,cmp);
        ll ans=0,tmp=0;
        for(int i=0; i<n; i++)
        {
            ans=max(ans,tmp+data[i].r);
            tmp+=data[i].o;
        }
        cout<<ans<<endl;
    }
    return 0;
}

 

51nod 1099 任务执行顺序 (贪心算法)

标签:

原文地址:http://www.cnblogs.com/Ritchie/p/5764494.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!