题目就不做详细介绍了,网上都能找到,下面是区间贪心的简单实现
1 #include <iostream> 2 #include <utility> //或者直接用<map> 3 #include <algorithm> 4 using namespace std; 5 const int MAXN=1e5+5; 6 int n,Beg[MAXN],End[MAXN],ans=0,t=0; 7 pair<int ,int> a[MAXN]; 8 void solve(){ 9 //贪心算法:结束时间越早之后的工作数量越多 10 //把结束时间放在pair的first,进行排序 11 for(int i=0;i<n;i++){ 12 a[i].first=End[i]; 13 a[i].second=Beg[i]; 14 } 15 sort(a,a+n); 16 for(int i=0;i<n;i++){ 17 if(a[i].second>t){ 18 ans++; 19 t=a[i].first; 20 } 21 } 22 printf("%d",ans); 23 } 24 int main(){ 25 cin>>n; 26 for(int i=0;i<n;i++){ 27 cin>>Beg[i]>>End[i]; 28 } 29 solve(); 30 return 0; 31 }