奇怪的错误
查看原帖
奇怪的错误
262942
Bonfire_Lit楼主2020/8/16 11:40

46分,52分WA,100分TLE,不多说上代码

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int cnt,n,ans=1,m[100002],cun[100002],h[100002];
int f(int x) {
	if(cun[x])return cun[x];
	int sum=1;
	for(int i=x; i<=n; i++)
		if(m[i]<m[x]) {
			if(cun[i])sum=max(cun[i]+1,sum);
			else sum=max(f(i)+1,sum);
		}
	cun[x]=sum;
	return sum;
}
int main() {
	while(scanf("%d",&m[++n])==1);
	n--;
	memset(h,0x3f3f3f3f,sizeof(h));
	for(int i=1; i<=n; i++) {
		ans=max(f(i),ans);
	}
	for(int i=1; i<=n; i++) {
		int po=0;
		for(int j=1; j<=cnt; j++) {
			if(h[j]>=m[i]&&h[j]<=h[po])po=j;
			}
		if (po==0) {
			i--;
			cnt++;
		} else {
			h[po]=m[i];
		}
	}
	printf("%d\n%d",ans,cnt);
}
2020/8/16 11:40
加载中...