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 }
本文来自博客园,作者:{scanner},转载请注明原文链接:{https://home.cnblogs.com/u/scannerkk/}

浙公网安备 33010602011771号