区间贪心

题目就不做详细介绍了,网上都能找到,下面是区间贪心的简单实现

 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 }

 

posted on 2020-09-22 09:46  恒晨  阅读(144)  评论(0编辑  收藏  举报

导航