为啥会RE啊? 而且样例跑出来是3(有一个题解样例跑出来也是3
查看原帖
为啥会RE啊? 而且样例跑出来是3(有一个题解样例跑出来也是3
181715
gjh303987897楼主2021/10/18 20:37
#include<iostream>
#include<cstdio>
#include<algorithm>
#define maxn 1000001
using namespace std;

inline int read(){
	int x=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){
		if(ch=='-') f=-1;
		ch=getchar();
	}
	while(ch<='9'&&ch>='0'){
		x=(x<<3)+(x<<1)+(ch^48);
		ch=getchar(); 
	}
	return x*f;
}

int b[maxn],route[maxn];
int n;
struct city{
	int begin,end;
}d[maxn];

inline bool cmp(city a,city b){
	return a.begin<a.end;
}
int main()
{
	n=read();
	for(int i=1;i<=n;i++){
		d[i].begin=read();
		d[i].end=read();
	}
	sort(d+1,d+1+n,cmp);
	int maxx=0,k=0;
	for(register int i=1;i<=n;i++) b[i]=1;
 	for(int i=n-1;i>=1;i--){
 		maxx=0; k=0;
 		for(register int j=i+1;j<=n;j++){
 			if(d[i].end<d[j].end&&maxx<b[j]){
 				maxx=b[j]; k=j;
			 }
		 }
		 route[i]=k; b[i]=1+maxx;
	}
	k=0; int sign=-1;
	for(int i=1;i<=n;i++){
		if(b[i]>sign){
			sign=b[i];
			k=i;
		}
	} 
	int ans=0;
	while(k!=0){
		ans++;
		k=route[k];
	}
	cout<<ans;
	return 0;
 } 
2021/10/18 20:37
加载中...