码迷,mamicode.com
首页 > 其他好文 > 详细

[codeforces_597B] (贪心)

时间:2019-01-28 23:55:21      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:printf   code   pac   思路   区间   cond   处理   []   sort   

题意

输入:区间数目n、及n个区间的起止(左闭右闭)。
输出:最多不重叠的区间有多少个。

思路

贪心,最早结束优先。

其他

1 贪心就要彻底一点,多余的处理通常没用。
2 此题还涉及sort排序。

代码

#include<math.h>
#include<stdio.h>
#include<vector>
#include<algorithm>

using namespace std;

bool finishEarly(pair<int,int> &order1,pair<int,int> &order2){
    return order1.second<order2.second;
}

int main(int argc, const char * argv[]) {
    int n;
    scanf("%d",&n);
    vector<pair<int, int>> orderVec;
    
    while(n--){
        int l,r;
        scanf("%d %d",&l,&r);
        orderVec.push_back(make_pair(l, r));
    }
    
    sort(orderVec.begin(), orderVec.end(),  finishEarly);

    int cnt=0;
    int end;
    for(vector<pair<int, int>>::iterator iter=orderVec.begin();iter!=orderVec.end();iter++){
        if(iter==orderVec.begin()){
            cnt++;
            end=iter->second;
        }
        else{
            if(iter->first>end){
                cnt++;
                end=iter->second;
            }
        }
    }
    
    printf("%d",cnt);
    return 0;
}

[codeforces_597B] (贪心)

标签:printf   code   pac   思路   区间   cond   处理   []   sort   

原文地址:https://www.cnblogs.com/coding-gaga/p/10332158.html

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