nlogn求条
查看原帖
nlogn求条
1419569
Z_kazuha楼主2024/10/17 14:35
#include <bits/stdc++.h>
using namespace std;
int n,f[105],g[105],a[105],dp[105],maxn,cnt=0x3f3f3f3f,b[105];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		int l=1,r=maxn,ans=0;
		while(l<=r){
			int mid=(l+r)>>1;
			if(f[mid]<a[i])l=mid+1,ans=mid;
			else r=mid-1;
		}
		dp[i]=max(1,ans+1);
		f[dp[i]]=a[i];
		maxn=max(maxn,dp[i]);
	}
	maxn=0;
	memset(f,0,sizeof(0));
	for(int i=1;i<=n;i++){
		b[i]=a[n-i+1];
	}
	for(int i=1;i<=n;i++){
		int l=1,r=maxn,ans=0;
		while(l<=r){
			int mid=(l+r)>>1;
			if(f[mid]>b[i])l=mid+1,ans=mid;
			else r=mid-1;
		}
		g[i]=max(1,ans+1);
		f[g[i]]=b[i];
		maxn=max(maxn,g[i]);
		cnt=min(cnt,n-dp[i]-g[i]+1);
	//	else cnt=min(cnt,n-dp[i]-g[i]);
	}
	cout<<cnt;
	return 0;
}
2024/10/17 14:35
加载中...