AcWing 905. 区间选点(贪心)

Posted MangataTS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing 905. 区间选点(贪心)相关的知识,希望对你有一定的参考价值。

题目链接

https://www.acwing.com/problem/content/907/

思路

我们用pair<int,int>来存储每一个区间的两个端点,然后按照右区间从小到大排序,然后每次贪心地将点放在区间的最右边,那么判断是否在下一个区间只需要判断是否大于或等于下一个区间的左区间即可,如果小于的话说明需要在下一个区间放置新点,我们将ans++,并将当前最新放的点的位置更新

代码

#include<bits/stdc++.h>
using namespace std;

const int N = 1e5+10;

#define PII pair<int,int>
vector<PII> V;
int n;

int main()

    cin>>n;
    int u,v;
    for(int i = 1;i <= n; ++i) 
        cin>>u>>v;
        V.push_back(v,u);
    
    sort(V.begin(),V.end());
    int loc = V[0].first;
    int ans = 1;
    for(int i = 1;i < n; ++i) 
        if(loc >= V[i].second) continue;
        ans++;loc = V[i].first;
    
    cout<<ans<<endl;
    
    return 0;

以上是关于AcWing 905. 区间选点(贪心)的主要内容,如果未能解决你的问题,请参考以下文章

AcWing905.区间选点

AcWing 算法基础课 第六讲 贪心 总结

第六章 贪心 完结

ACM - 贪心(经典母题+POJ一些练习题)

ACM - 贪心(经典母题+POJ一些练习题)

ACM - 贪心(经典母题+POJ一些练习题)