思路:在可選的工作中,每次選取結束時間最早的工作(結束時間越早,之後可選的工作也就越多)
代碼:
#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;
}