如何提高代码水平
查看原帖
如何提高代码水平
282080
NewJeanss楼主2020/11/22 20:17

方法:看看我的思路为什么错了!谢谢!

#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;
}

给一组反例!谢谢!

2020/11/22 20:17
加载中...