蒟蒻80分求助
查看原帖
蒟蒻80分求助
267428
Access57楼主2022/7/23 11:06
#include<bits/stdc++.h>
using namespace std;
int h[110],n,l[110],len=0,dp1[110],dp2[110],mx=0;
int main()
{
	int n;
	cin>>n;
	for(int i=0;i<n;i++) cin>>h[i];
	l[0]=h[0],dp1[0]=1;
	for(int i=1;i<n;i++)
	{
		if(l[len]<h[i]) l[++len]=h[i];
		else l[upper_bound(l,l+len,h[i])-l]=h[i];
		dp1[i]=len+1;
	}
	len=0,memset(l,0,sizeof(l)),reverse(h,h+n);
	l[0]=h[0],dp2[0]=1;
	for(int i=1;i<n;i++)
	{
		if(l[len]<h[i]) l[++len]=h[i];
		else l[upper_bound(l,l+len,h[i])-l]=h[i];
		dp2[i]=len+1;
	}
	reverse(dp2,dp2+n);
	for(int i=0;i<n;i++)
		mx=max(mx,dp1[i]+dp2[i]-1);
	cout<<n-mx;
}
2022/7/23 11:06
加载中...