思路:在可选的工作中,每次选取结束时间最早的工作(结束时间越早,之后可选的工作也就越多)
代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5;
int n;
pair<int,int>work[maxn];
int main(){
cin>>n;
for(int i=0;i<n;i++) cin>>work[i].second;//为了让结束时间早的工作排在前面,将t存入first
for(int i=0;i<n;i++) cin>>work[i].first;//s存入second
sort(work,work+n);//对pair进行字典序比较
int ans=0,t=0;//t为最后所选工作的结束时间
for(int i=0;i<n;i++)
if(t<work[i].second){
ans++;
t=work[i].first;
}
cout<<ans;
return 0;
}