2 solutions

  • 0
    @ 2022-4-15 14:12:51

    n-最长单峰子序列

    #include<iostream>
    using namespace std;
    const int N=1010;
    int a[N],f[N],g[N],w[N];
    int main(){
        int n;
        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[j]<a[i])
                    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[j]<a[i])
                    g[i]=max(g[i],g[j]+1);
        }
        int maxn=-1;
        for(int i=1;i<=n;i++)
        {
            w[i]=f[i]+g[i]-1;
            maxn=max(maxn,w[i]);
        }
        cout<<n-maxn;
        return 0;
    }
    

    Information

    ID
    615
    Time
    1000ms
    Memory
    16MiB
    Difficulty
    8
    Tags
    # Submissions
    15
    Accepted
    5
    Uploaded By