牛客:HJ24 合唱队[华为机考][最长递增子集][动态规划]

学习要点

  1. 求最长递增字列
  2. 求最长递减子列

题目链接

合唱队_牛客题霸_牛客网

题目描述

解法:动归求最长递增子列

cpp 复制代码
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n;
    while (cin >> n) {
        // 输入的数组
        int tmp;
        vector<int> v;
        for (int i = 0; i < n; ++i) {
            cin >> tmp;
            v.push_back(tmp);
        }

        // 最长递增子序列 从左往右
        if (v.empty()) return 0;
        vector<int> dp1(n, 1);
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j <  i ; ++j) {
                if (v[i] > v[j]) {
                    dp1[i] = max(dp1[i], dp1[j] + 1);
                }
            }
        }
        // 最长递减子序列 从右往左
        if (v.empty()) return 0;
        vector<int> dp2(n, 1);
        for(int i = n-1;i>=0;i--)
        {
            for(int j = n-1;j>i;j--)
            {
                if(v[i] > v[j])
                {
                    dp2[i] = max(dp2[i],dp2[j]+1);
                }
            }
        }

        int result;
        for(int i =0;i<n;i++)
        {
            result = max(result,dp1[i]+dp2[i]-1);
        }
        cout << n - result;


    }
}
// 64 位输出请用 printf("%lld")
相关推荐
用户4978630507329 分钟前
(一)小红的数组操作
算法·编程语言
怕浪猫3 小时前
Electron 系列文章封面图
算法·架构·前端框架
徐小夕5 小时前
JitWord 3.0 正式发布,高精度Word异构解析+复杂组件兼容,打造web端协同Word编辑器
前端·vue.js·算法
通信小呆呆21 小时前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
程序猿追21 小时前
那个右下角的小数字怎么“卡”住我打字——我用 HarmonyOS 自己写了一个字数限制输入框
pytorch·华为·harmonyos
古德new21 小时前
鸿蒙PC使用electron迁移:Joplin Electron 桌面适配全记录
华为·electron·harmonyos
世人万千丶21 小时前
桌面便签小应用 - HarmonyOS ArkUI 开发实战-TextArea与Flex布局-PC版本
华为·harmonyos·鸿蒙·鸿蒙系统
慧海灵舟21 小时前
AGenUI 鸿蒙端实战踩坑录:从 Column 布局消失到异步组件宽度为 0
华为·harmonyos
benben04421 小时前
强化学习之DQN算法族(基于gymnasium开发)
算法