首页 > 编程语言 > 详细

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

时间:2016-08-12 13:10:35      阅读:216      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!