Luogu1091 合唱队形

Posted PushinL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Luogu1091 合唱队形相关的知识,希望对你有一定的参考价值。

线性动态规划

思路:一遍算出最长不降子序列,再一遍算出最长不升子序列,再一遍历维护max求出答案。

#include<iostream>
using namespace std;
int n,t[105],fd[105],ans,fu[105];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>t[i];
    for(int i=1;i<=n;i++)
        for(int j=0;j<i;j++)
            if(t[i]>t[j])
                fd[i]=max(fd[i],fd[j]+1);
    for(int i=n;i>0;i--)
        for(int j=n+1;j>i;j--)
            if(t[i]>t[j])
                fu[i]=max(fu[i],fu[j]+1);
    for(int i=1;i<=n;i++)
        ans=max(ans,fu[i]+fd[i]-1);
    cout<<n-ans;
    return 0;
}

以上是关于Luogu1091 合唱队形的主要内容,如果未能解决你的问题,请参考以下文章

luogu P1091 合唱队形

洛谷 P1091 合唱队形 题解

codevs1058 合唱队形==洛谷P1091 合唱队形

洛谷P1091 合唱队形

1091 合唱队形

P1091 合唱队形