482. 合唱队形

正着求一遍\(LIS\),反着求一遍\(LIS\),最后拿总人数减去满足\(T_1<...<T_i>T_{i+1}>…>T_K(1<=i<=K)\)的人数即可。

const int N=110;
int f[N],g[N];
int a[N];
int n;

int main()
{
    cin>>n;

    for(int i=1;i<=n;i++) cin>>a[i];

    for(int i=1;i<=n;i++)
    {
        f[i]=1;
        for(int j=1;j<i;j++)
            if(a[i] > a[j]) f[i]=max(f[i],f[j]+1);
    }


    for(int i=n;i>=1;i--)
    {
        g[i]=1;
        for(int j=n;j>i;j--)
            if(a[i] > a[j]) g[i]=max(g[i],g[j]+1);
    }

    int res=0;
    for(int i=1;i<=n;i++) res=max(res,f[i]+g[i]-1);
    cout<<n-res<<endl;
    //system("pause");
}
posted @ 2020-10-01 16:25  Dazzling!  阅读(197)  评论(0编辑  收藏  举报