题解 | #合唱队形#

合唱队形

http://www.nowcoder.com/practice/0045cd3e39634a66ada63c2adeb49234

详细视频讲解看这个视频: https://www.bilibili.com/video/BV1t64y1u7Cu

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1001;

int a[MAXN];
int dp1[MAXN];
int dp2[MAXN];

int n;
int MAXL;

int main(){
    cin >> n;
    //输入一排同学的身高
    for(int i = 1; i <= n; i++){    
        cin >> a[i];
    }
    //dp1[i]表示以i为终点的最长上升序列的高度
    dp1[1] = 1;
    for(int i = 2; i <= n; i++){
        MAXL = 0;
        for(int j = 1; j <= i-1; j++){
            if(a[i] > a[j]){
                if(dp1[j] > MAXL){
                    MAXL = dp1[j];
                }
            }
        }
        dp1[i] = MAXL + 1;
    }
    //dp2[i]表示以i为起点的最长下降序列的高度
    dp2[n] = 1;
    for(int i = n - 1; i >= 1; i--){
        MAXL = 0;
        for(int j = i+1; j <= n; j++){
            if(a[i] > a[j]){
                if(dp2[j] > MAXL){
                    MAXL = dp2[j];
                }
            }
        }
        dp2[i] = MAXL + 1;
    }
    int res = 0;
    for(int i = 1; i <= n; i++){
        if(dp1[i] + dp2[i] > res){
            res = dp1[i] + dp2[i];
        }
    }
    cout << n - (res - 1);
    return 0;
}
全部评论

相关推荐

owwhy:难,技术栈在嵌入式这块显得非常浅,并且简历有大问题。教育经历浓缩成两行就行了,写什么主修课程,说的不好听这块没人在意,自我评价删了,项目写详细点,最终简历缩成一页。相关技能怎么说呢,有点差了,还写成这么多行
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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