• 【dp】合唱队形


    题目描述

    NN位同学站成一排,音乐老师要请其中的(N-KNK)位同学出列,使得剩下的KK位同学排成合唱队形。

    合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,…,K,他们的身高分别为T1,T2,,TK, 则他们的身高满足T1<...<Ti>Ti+1>>TK(1iK)。

    你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。

    输入输出格式

    输入格式:

    共二行。

    第一行是一个整数N(2N100),表示同学的总数。

    第二行有nn个整数,用空格分隔,第ii个整数Ti(130Ti230)是第ii位同学的身高(厘米)。

    输出格式:

    一个整数,最少需要几位同学出列。

    输入输出样例

    输入样例#1: 
    8
    186 186 150 200 160 130 197 220
    
    输出样例#1: 
    4
    

    说明

    对于50%的数据,保证有n20;

    对于全部的数据,保证有n100

    【思路1】:

    和花匠一样:

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<map>
    #include<string>
    #include<cstring>
    using namespace std;
    const int maxn=999999999;
    const int minn=-999999999;
    inline int read() {
        char c = getchar();
        int x = 0, f = 1;
        while(c < '0' || c > '9') {
            if(c == '-') f = -1;
            c = getchar();
        }
        while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
        return x * f;
    }
    int f1[10050],f2[10050],n,a[10050];
    int main() {
        cin>>n;
        for(int i=1; i<=n; ++i) {
            cin>>a[i];
            f1[i]=1;
            f2[i]=1;
        }
        for(int i=1; i<=n; ++i) {
            for(int j=1; j<i; ++j) {
                if(a[i]>a[j]) {
                    f1[i]=max(f1[i],f1[j]+1);
                }
            }
        }
        for(int i=1; i<=n; ++i) {
            for(int j=1; j<i; ++j) {
                if(a[i]<a[j]) {
                    f2[i]=max(f2[i],max(f1[j],f2[j])+1);
                }
            }
        }
        int ans=minn;
        for(int i=1;i<=n;++i)
        {
            ans=max(ans,max(f1[i],f2[i]));
        }
        cout<<n-ans;
        return 0;
    }

    【思路二】:
    从左到右跑最长上升,从右到左跑最长下降,然后枚举分割点

    代码没打(我太蒟了)

  • 相关阅读:
    jdk.exe转zip免安装
    jdk全版本下载链接
    Cesium primitive绘制折线和多边形
    sql调优的几种方式
    maven操作
    如何设计高并发系统?
    用友华表cell的程序发布
    OpenCV异常问题(一)
    js jquery window 高 宽
    sql中游标的使用一
  • 原文地址:https://www.cnblogs.com/pyyyyyy/p/10790287.html
Copyright © 2020-2023  润新知