就很离谱,100pts,结果超时。
查看原帖
就很离谱,100pts,结果超时。
975754
_aa_楼主2023/12/29 22:15

我用没母亲的dp做的

#include<bits/stdc++.h>
using namespace std;
int l=0;
int f[100005],arr[100005],s,h[100005],x;
int check(int a){
	bool f=1;
	for(int i=1;i<=x;++i){
		if(h[i]>=a) f=0;
	}
	return f;
}
int main(){
	while(cin>>arr[++l]);
	l--;
	for(int i=1;i<=l;++i){
		for(int j=1;j<i;++j){
			if(arr[i]>arr[j]) continue;
			f[i]=max(f[j],f[i]);
		}
		f[i]+=1; 
		s=max(s,f[i]);
	}
	cout<<s;
	for(int i=1;i<=l;++i){
		int m1=30001,m2;
		if(x==0||check(arr[i])){
			x++;
			h[x]=arr[i];
		}
		else{
			for(int j=1;j<=x;++j){
				if(h[j]<m1&&h[j]>=arr[i]){
					m1=h[j];
					m2=j;
				}
			}
			h[m2]=arr[i];
		}
	}
	cout<<'\n'<<x;
	return 0;
}

我的评测情况

2023/12/29 22:15
加载中...