题解 | #合唱队#

合唱队

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

#include <iostream>
#include <vector>

using namespace std;


int main() {
    int N;
    cin >> N;
    vector<int> data(N);
    for (int i = 0; i < N; i++) {
        cin >> data[i];
    }
    vector<int> dp1(N, 1), dp2(N, 1);

    for (int i = 0; i < N; i++) {
        for (int j = 0; j < i; j++) {
            if (data[i] > data[j])
                dp1[i] = max(dp1[i], dp1[j] + 1);
        }
    }

    for (int i = N - 1; i >= 0; i--) {
        for (int j = N - 1; j > i; j--) {
            if (data[i] > data[j]) 
                dp2[i] = max(dp2[i], dp2[j] + 1);
        }
    }

    int maxn = 0;
    for (int i = 0; i < N; i++) {
        if (dp1[i] + dp2[i] - 1 > maxn)
            maxn = dp1[i] + dp2[i] - 1;
    }
    cout << N - maxn;
}
// 64 位输出请用 printf("%lld")

#华为OD机试真题#
全部评论

相关推荐

11-15 17:19
湖南大学 Java
成果成果成果果:这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务