PTA区间选点

一、题目描述

  

 

 二、解题思路

  简单贪心问题,先根据他的右端点从小到大排序,再根据左端点从小到大排序。最后开始遍历寻找答案,如果后一个的左端点大于等于前一个的右端点答案就加一,因为没有相交的地方,所以后面的点一定不会与前一个点相交。

三、代码实现

 1 #include "bits/stdc++.h"
 2 using namespace std;
 3 struct node{
 4     int l,r;
 5 }e[100010];
 6 bool cmp(node a,node b)
 7 {
 8     if(a.r < b.r)
 9         return true;
10     else if(a.r == b.r)
11         return a.l < b.l;
12     else
13         return false;
14 }
15 int main()
16 {
17     ios::sync_with_stdio(false);
18     int n;
19     cin >> n;
20     for(int i = 1;i <= n;i++)
21         cin >> e[i].l >> e[i].r;
22     sort(e + 1,e + 1 + n,cmp);
23     int ans = 1;
24     for(int i = 2;i <= n;i++){
25         if(e[i].l > e[i - 1].r){
26             ans++;
27             continue;
28         }
29     }
30     cout << ans;
31     return 0;
32 }
posted @ 2022-03-15 15:06  scannerkk  阅读(44)  评论(0)    收藏  举报