题解 | #合唱队#

合唱队

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

//动态规划
//C++实现了一下最大递增和最大递减
//只要找到当前位置左侧的最大递增子串长度+右侧的最大递增子串长度的和最大
//也就是某个dp位置的递增dp+递减dp最大
//结果就是总数N-最大和+1(左右侧重复计算了)

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

int main(){
    int N;
    cin >> N;
    vector<int> T;
    for(int i = 0;i<N;++i){
        int Ttemp;
        cin >> Ttemp;
        T.emplace_back(Ttemp);
    }
    //动态规划求最长递增子串
    vector<int> dpincrease(N,1);
    for(int i = 1;i<N;++i){
        for(int j = i-1;j>=0;--j){
            if(T[i] > T[j])dpincrease[i] = max(dpincrease[i],dpincrease[j]+1);
        }
    }
    //动态规划求最长递减子串
    vector<int> dpdecrease(N,1);
    for(int i = N-1;i>=0;--i){
        for(int j = i+1;j<N;++j){
            if(T[i] > T[j])dpdecrease[i] = max(dpdecrease[i],dpdecrease[j]+1);
        }
    }
    int res = 0;//最少踢出人数
    for(int i = 0;i<N;++i){
        if(dpincrease[i] != 1 && dpdecrease[i]!=1)res = max(res,dpincrease[i]+dpdecrease[i]);
    }
    
    cout << N-res+1 << endl;
    return 0;
}
全部评论

相关推荐

序&nbsp;朋友们,好久不见。&nbsp;笔者在过去消失的五个月里被困在情绪牢笼中过的相当煎熬,一度丢失自己,觉得整个世界都是昏暗的。&nbsp;庆幸的是靠着自己纯硬扛也是走出来了。表达欲再度回归,所以真的很开心还有机会能在再和大家见面。&nbsp;破碎秋招&nbsp;抑郁情绪的引爆点必然是秋招期间遭受的打击了,从去年九月份腾讯转正被告知失败之后就开始疯狂投递简历,每天都在经历:简历挂、一面挂、二面挂、三面挂、HR面挂,每天睁开眼就被无所适从的挫败感包围。&nbsp;秋招的特点是即便流程走到最后一步也不一定会&nbsp;offer,因为还需要进入大池子进行横向对比,俗称泡池子,而这一泡我的大多数面试流程到后面就没了后文,这一度让我感觉非常绝望。我深知自己学历并...
SoNiC_X:我已经工作快2年了,当时高考没考好没去到想去的学校,觉得天要塌了;校招找不到工作,觉得天要塌了;现在工作觉得看不到未来,觉得天要塌了;最近最大的感悟就是:天会一直塌,但是生活也会一直继续下去,还是要调整好自己的心态,不要因为一时的困难把自己困住,要记住完蛋的日子永远在后头
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务