全都超时,不知道怎么改进
查看原帖
全都超时,不知道怎么改进
526235
mmdxm楼主2022/6/16 20:39
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
int f[100005],z[100005],sum[100005];
using namespace std;
int main(){
	int n,m,i,j,k=1,ans=0;
	for(n=1;;n++){
		cin>>z[n];
		if(cin.get()=='\n') break;
	}
    f[1]=1;
	for(i=2;i<=n;i++){
		f[i]=1;
		for(j=i-1;j>=1;j--){
			if(z[i]<=z[j]) f[i]=max(f[i],f[j]+1);
		}
	}
	for(i=1;i<=n;i++) ans=max(ans,f[i]);
	sum[k]=z[1];
	for(i=2;i<=n;i++){
		for(j=1;j<=k;j++){
			if(z[i]<=sum[j]){
				sum[j]=z[i];
				break;
			}
			else
			if(j==k){
				k++;
				sum[k]=z[i];
			}
		}
	}
	printf("%d %d",ans,k);
	return 0;
}
2022/6/16 20:39
加载中...