PTA區間選點
阿新 • • 發佈:2022-03-15
一、題目描述
二、解題思路
簡單貪心問題,先根據他的右端點從小到大排序,再根據左端點從小到大排序。最後開始遍歷尋找答案,如果後一個的左端點大於等於前一個的右端點答案就加一,因為沒有相交的地方,所以後面的點一定不會與前一個點相交。
三、程式碼實現
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 }