1. 程式人生 > 其它 >PTA區間選點

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 }