题解 | #合唱队#

合唱队

https://www.nowcoder.com/practice/6d9d69e3898f45169a441632b325c7b4

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

bool cmp(int a,int b){
    return a>b;
}

int main() {
    int n;
    
    cin>> n;
    vector<int>a(n+1,0);
    for(int i=1;i<=n;i++){
        cin>> a[i];
    }
    vector<vector<int>>vec(n+1,vector<int>(2,1));

    for(int i=1;i<=n;i++){
        for(int left=1;left<=i;left++){
            if(a[left]<a[i])vec[i][0]=max(vec[i][0],vec[left][0]+1);
        }
    }

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

    vector<int>res(n+1,0);
    for(int i=1;i<=n;i++){
        if(vec[i][0]!=0&&vec[i][1]!=0){
            res[i]=vec[i][0]+vec[i][1]-1;
        }
    }
    sort(res.begin(),res.end(),cmp);
    cout<<n-res[0]<<endl;
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

26牛牛不会梦到感谢信:羡慕离职了还能吃吗现在就赶回去
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务