半江AC半江TLE
查看原帖
半江AC半江TLE
1284381
Lgc2012楼主2024/7/17 10:45
#include<bits/stdc++.h>
using namespace std;
const int maxn=100005;
int a[maxn],dp[maxn],max1=0,max2=0,cnt=1;
int main(){
	while(cin>>a[cnt]) {
		cnt++;
	}
	for(int i=1; i<cnt; i++) {
		dp[i]=1;
		for(int j=1; j<i; j++) {
			if(a[j]>=a[i]) dp[i]=max(dp[i],dp[j]+1);
		}
	}
	for(int i=1; i<=cnt; i++) max1=max(max1,dp[i]);
	cout<<max1<<endl;
	dp[cnt]=1;
	for(int i=cnt;i>=1;i--){
		dp[i]=1;
		for(int j=i; j<=cnt; j++) {
			if(a[i]<a[j]) dp[i]=max(dp[i],dp[j]+1);
		}
	}
	for(int i=1; i<=cnt; i++) max2=max(max2,dp[i]);
	cout<<max2<<endl;
	return 0;
}

O(nlogn) 做法怎么弄?

2024/7/17 10:45
加载中...