当前位置: 首页 > news >正文

【算法|动态规划 | 线性dp | 最长上升子序列模型No.1】AcWing1017.怪盗基德的滑翔翼 AcWing1014.登山

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【AcWing算法提高学习专栏】
🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助
🍓希望我们一起努力、成长,共同进步

目录

  • 一、AcWing1017.怪盗基德的滑翔翼
    • 解题代码
  • 二、AcWing1014.登山
    • 解题代码
  • 三、AcWing482.合唱队形
    • 解题代码

一、AcWing1017.怪盗基德的滑翔翼

原题链接:点击直接跳转到该题目

解题代码

#include<iostream>
#include<vector>
using namespace std;const int N = 110;
int arr[N];int main()
{int K;cin >> K;while(K--){int res = 1;int n;scanf("%d",&n);for(int i = 1;i <= n;i++) scanf("%d",&arr[i]);//创建dp表vector<int> dp1(N,1);//正向求解for(int i = 2;i <= n;i++){for(int j = 1;j < i;j++)if(arr[i] > arr[j]) dp1[i] = max(dp1[i],dp1[j] + 1);res = max(dp1[i],res);}//反向求解vector<int> dp2(N,1);for(int i = n - 1;i >= 1;i--){for(int j = n;j > i;j--)if(arr[j] < arr[i]) dp2[i] = max(dp2[i],dp2[j] + 1);res = max(dp2[i],res);}printf("%d\n",res);}return 0;
}

二、AcWing1014.登山

原题链接:点击直接跳转到该题目

解题代码

#include<iostream>
#include<vector>
using namespace std;const int N = 1010;
int arr[N];int main()
{int n;scanf("%d",&n);for(int i = 1;i <= n;i++) cin >> arr[i];// 创建dp表vector<int> dp1(N,1),dp2(N,1);for(int i = 2;i <= n;i++){for(int j = 1;j < i;j++){if(arr[i] > arr[j]) dp1[i] = max(dp1[i],dp1[j] + 1);}}for(int i = n - 1;i >= 1;i--){for(int j = n;j > i;j--){if(arr[i] > arr[j]) dp2[i] = max(dp2[i],dp2[j] + 1);}}vector<int> dp(N);int ret = 0;for(int i = 1;i <= n;i++){dp[i] = dp1[i] + dp2[i] - 1;ret = max(ret,dp[i]);}printf("%d\n",ret);return 0;
}

三、AcWing482.合唱队形

原题链接:点击直接跳转到该题目

解题代码

#include<iostream>
#include<vector>
using namespace std;const int N = 110;
int arr[N];int main()
{int n;scanf("%d",&n);for(int i = 1;i <= n;i++) scanf("%d",&arr[i]);// 创建dp表vector<int> dp1(N,1),dp2(N,1);for(int i = 2;i <= n;i++){for(int j = 1;j < i;j++){if(arr[i] > arr[j]) dp1[i] = max(dp1[i],dp1[j] + 1);}}for(int i = n - 1;i >= 1;i--){for(int j = n;j > i;j--){if(arr[i] > arr[j]) dp2[i] = max(dp2[i],dp2[j] + 1);}}vector<int> dp(N);int res = 0;for(int i = 1;i <= n;i++) dp[i] = dp1[i] + dp2[i] - 1,res = max(res,dp[i]);printf("%d\n",n - res);return 0;
}
http://www.lryc.cn/news/213172.html

相关文章:

  • 2023年道路运输企业主要负责人证模拟考试题库及道路运输企业主要负责人理论考试试题
  • Linux学习第26天:异步通知驱动开发: 主动
  • SpringBoot的核心配置:YAML概述、基础语法;JSR303数据校验;多环境切换
  • 把Qt6.2.4内置的标签打印了一遍
  • element-ui 表单校验・大全
  • 搭建高性能分布式存储-minio
  • leetCode 137. 只出现一次的数字 II(拓展篇) + 模5加法器 + 真值表(数字电路)
  • docker导致root空间满进入不了系统解决方案
  • uni-app遮罩遮住小程序tabbar
  • Flink on yarn 加载失败plugins失效问题解决
  • 显卡服务器的特点和优势在哪里
  • c++设计模式二:原型模式
  • 【Qt控件之QMessageBox】详解
  • SSH安全登录远程主机
  • 揭秘!产品经理提升效率的秘密武器:10款AI生成PPT工具
  • Oracle修改带数据的字段类型
  • WebService接口方式和Restful接口这两者有什么区别和相同点
  • jenkins自动化操作步骤(gitblit)
  • centos中mongodb设置服务自启动并 允许远程IP访问
  • 实时定位和配送追踪:开发万岳同城外卖APP的关键技术特性
  • 数据库强化(3.存储过程)
  • 雅思小作文笔记
  • Java List Set Map
  • 【数据结构】数组和字符串(十三):链式字符串的基本操作(串长统计、查找、复制、插入、删除、串拼接)
  • Python3 获取当前服务器公网 IP 地址
  • EAS查前5分钟到现在的组织变动数据
  • uni-app——如何阻止事件冒泡
  • [MySQL]索引
  • 什么是AUTOSAR ComStack,AUTOSAR架构中,CAN通信堆栈CAN Communication Stack介绍
  • 黄金期货与黄金现货的区别