提交时间:2022-07-19 11:51:05

运行 ID: 52249

#include <bits/stdc++.h> using namespace std; #define ll long long int n,ans; int numl[500005]; struct node { ll l,r; } jb[500005]; int dfs(int h,int sum) { for(int i=h; i<=n; i++) { int sum1=1; for(int j=i+1; j<=n; j++) if(jb[numl[j]].r<=jb[numl[i]].r) { sum1++; sum=max(sum,dfs(j,sum1)); } } return sum; } int main() { // srand(time(0)); scanf("%d",&n); // if(n>400) // { // int x=rand(); // cout<<x%(n-1)+1<<endl; // return 0; // } for(int i=1; i<=n; i++) scanf("%lld%lld",&jb[i].l,&jb[i].r); for(int i=1; i<=n; i++) numl[i]=i; for(int i=1; i<=n; i++) for(int j=i+1; j<=n; j++) { if(jb[i].r<jb[j].r) swap(numl[i],numl[j]); if(jb[i].l>jb[j].l) swap(numl[i],numl[j]); } ans=dfs(1,1); cout<<ans<<endl; return 0; }