方法:看看我的思路为什么错了!谢谢!
#include <bits/stdc++.h>
#define N 3000005
using namespace std;
struct node{
int x,y;
friend bool operator <(const node &a,const node &b){
if(a.x==b.x) return a.y<b.y;
return a.x<b.x;
}
}a[N];
int f[N],n,Max,now;
signed main(){
//freopen("P1868_3.in","r",stdin);
ios::sync_with_stdio(false); cin.tie(0);
while(cin>>n){
for(int i=1;i<=n;i++) cin>>a[i].x>>a[i].y,a[i].x++,a[i].y++;
sort(a+1,a+n+1);
memset(f,0,sizeof(f)); Max=0; now=0;
for(int i=1;i<=n;i++){
while(now<a[i].x) Max=max(f[now++],Max);
f[a[i].y]=max(f[a[i].y],Max+a[i].y-a[i].x+1);
}
cout<<f[a[n].y]<<endl;
}
return 0;
}
给一组反例!谢谢!