链接:
https://www.luogu.com.cn/record/152447438
代码:
#include<iostream>
using namespace std;
int n,a[200001],b[200001],dp[200001],ans=0;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
scanf("%d",&b[i]);
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n-i;j++){
if(a[j]>a[j+1]){
swap(a[j],a[j+1]);
swap(b[j],b[j+1]);
}
}
}
for(int i=1;i<=n;i++){
dp[i]=1;
for(int j=1;j<i;j++){
if(b[i]>b[j]&&dp[j]+1>dp[i]){
dp[i]=dp[j]+1;
}
}
if(dp[i]>ans){
ans=dp[i];
}
}
cout<<ans<<endl;
return 0;
}
求具体解决办法,萌新不会啥lower_bound,还有题解区第三篇题解“lower_bound和upper_bound的用法”的连接好像挂了。