AcWing 482. 合唱队形
原题链接
简单
作者:
①②③木头人
,
2021-03-10 18:19:53
,
所有人可见
,
阅读 206
#include <iostream>
#include <algorithm>
using namespace std;
const int N=1000;
int f[N],g[N],h[N];
int n,res;
int main()
{
cin >>n;
for(int i=0;i<n;i++)
cin >>h[i];
for(int i=0;i<n;i++)
{
f[i]=1;//只有一个的时候
for(int j=0;j<i;j++)
if(h[j]<h[i])
f[i]=max(f[i],f[j]+1);
}
for(int i=n-1;i>=0;i--)
{
g[i]=1;
for(int j=n-1;j>i;j--)
if(h[j]<h[i])
g[i]=max(g[i],g[j]+1);
}
for(int i=0;i<n;i++)
res=max(res,f[i]+g[i]-1);
cout <<n-res;
}
运用最长上升子序列