华为机试:合唱队

//chatGPT帮大忙

重新看这道题,觉得解法有问题,不知道为什么测试用例没有被卡,dp_left/right数组的下标+1表示的才是左边/右边能站的最多人数,不能直接使用tail数组的长度表示最多人数。

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

int main() {
    int N, i, j, temp, ans;
    cin >> N;
    ans = N;
    vector<int> height;
    for (i = 0; i < N; i++) {
        cin >> temp;
        height.push_back(temp);
    }
    vector<int> tails;
    vector<int> dp_left(N, 0);
    for (i = 0; i < N; i++) {
        auto it = lower_bound(tails.begin(), tails.end(), height[i]);
        if (it == tails.end()) {
            tails.push_back(height[i]);
            dp_left[i] = tails.size();
        } else {
            *it = height[i];
            dp_left[i] = it - tails.begin();
        }
        //dp_left[i] = tails.size();
    }
    // for (i = 1; i < N; i++) {
    //     for (j = 0; j < i; j++) {
    //         if (height[j] < height[i]) {
    //             dp_left[i] = max(dp_left[i], dp_left[j] + 1);
    //         }
    //     }
    // }
    tails.clear();
    vector<int> dp_right(N, 0);
    for (i = N-1; i >= 0; i--) {
        auto it = lower_bound(tails.begin(), tails.end(), height[i]);
        if (it == tails.end()) {
            tails.push_back(height[i]);
            dp_right[i] = tails.size();
        } else {
            *it = height[i];
            dp_right[i] = it - tails.begin();
        }
        //dp_right[i] = tails.size();
    }
    // for (i = N - 2 ; i >= 0; i--) {
    //     for (j = N - 1; j > i; j--) {
    //         if (height[j] < height[i]) {
    //             dp_right[i] = max(dp_right[i], dp_right[j] + 1);
    //         }
    //     }
    // }
    for (i = 0; i < N; i++) {
        ans = min(ans, N - (dp_left[i] + dp_right[i] - 1));
    }
    cout << ans << endl;
    return 0;
}

全部评论
感谢大自然的馈赠
点赞 回复 分享
发布于 2023-02-12 18:48 陕西
chatGPT怎么帮忙啊?
点赞 回复 分享
发布于 2023-02-11 04:42 美国

相关推荐

不愿透露姓名的神秘牛友
11-21 11:29
已编辑
斯卡蒂味的鱼汤:知道你不会来数马,就不捞你😂最近数马疯狂扩招,招聘要求挺低的,你能力肯定够,应该就是因为太强了,知道你不会来才不捞你
投递腾讯云智研发等公司7个岗位
点赞 评论 收藏
分享
10-24 00:54
已编辑
门头沟学院 Java
牛客20646354...:这连小厂都找不到就离谱,只能说可能你根本没投什么小厂。说实话现在都要11月了,没什么岗位了。其实最好是在9月找,那时候暑假工刚走,岗位多的是,现在都占满了岗位了,秋招的秋招,顶替暑假工的也基本上都顶替了。 只能多投了,简历其实都差不多,你这都不是外卖+点评去找实习了,已经比好多人优秀了。实在找不到,可以降低一些标准的,能投到自研项目的小厂说实话可能比你去中大厂能学到更多东西。因为中大厂最多给你看一点点模块功能,小厂基本上全部代码甚至几个项目的代码都能拿到。
点赞 评论 收藏
分享
评论
点赞
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务