【动态规划刷题笔记】线性dp:合唱队形(最长递增子序列的变体)
[NOIP2004 提高组] 合唱队形 - 洛谷
思路:最少出列,即挑出最多,即找最长递增子序列和最长递减子序列
设dp1[i]为以h[i]结尾的最长递增子序列
dp2[i]为以h[i]开头的最长递减子序列
结果为n-(dp1[i]+dp2[i]-1)的最小值
注意max,min;
注意1~n还是0~n-1;
注意结果要-1(h[i]算2次)
如果思路对,举简单例子调试
#include<iostream>
#include<algorithm>
using namespace std;int n;
int h[101];
int dp1[101];//存放以h[i]为结尾的最长递增子序列的长度
int dp2[101];//存放以h[i]为起点的最长递减子序列的长度
int main()
{cin>>n;for(int i=0;i<100;i++){dp1[i]=1;dp2[i]=1;}for(int i=1;i<=n;i++){cin>>h[i];}dp1[0]=0;dp1[1]=1;
for (int i = 2; i <= n; i++){for (int j = 1; j <= i - 1; j++){if (h[j] < h[i])dp1[i] = max(dp1[i], dp1[j] + 1);}}dp2[n - 1] = 1;for (int i = n - 2; i >= 0; i--) {for (int j = i + 1; j <= n - 1; j++){if (h[j] < h[i])dp2[i] = max(dp2[i], dp2[j] + 1);}}int res = 0;for (int i = 1; i <= n; i++){res = max(res, dp1[i] + dp2[i])-1;}cout << n-res;}
【动态规划刷题笔记】线性dp:合唱队形(最长递增子序列的变体)相关推荐
- 题目1131:合唱队形(最长递增子序列进阶)
题目链接:http://ac.jobdu.com/problem.php?pid=1131 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...
- 【动态规划】计蒜客:蒜头君闯关(最长递增子序列的变体)
题意: 求递增子序列之和的最大值 dp[i]:以nums[i]结尾的递增子序列之和的最大值 初始化: dp[0]=nums[0] 状态转移方程: dp[i]=max{ ...
- 【动态规划】计蒜客:跳木桩(最长递增子序列的变体)
蒜头君面前有一排 n 个木桩,木桩的高度分别是h1,h2,h3-hn.蒜头第一步可以跳到任意一个木桩,接下来的每一步蒜头不能往回跳只能往前跳,并且跳下一个木桩的高度 不大于 当前木桩.蒜头君希望能踩到 ...
- 动态规划设计方法详解最长递增子序列
很多读者反应,就算看了前文动态规划详解,了解了动态规划的套路,也不会写状态转移方程,没有思路,怎么办?本文就借助「最长递增子序列」来讲一种设计动态规划的通用技巧:数学归纳思想. 最长递增子序列(Lon ...
- 《动态规划入门》刷题笔记(更新中)
<动态规划>刷题笔记 1. 斐波那契数 2. 第 N 个泰波那契数 3. 爬楼梯 4. 使用最小花费爬楼梯 5. 打家劫舍 6. 打家劫舍 II 7. 删除并获得点数 8. 跳跃游戏 9. ...
- 【leetcode刷题笔记】动态规划
#[leetcode刷题笔记]动态规划 石子游戏 public boolean stoneGame(int[] piles) {int N = piles.length;// dp[i][j] is ...
- LeetCode刷题笔记-动态规划-day4
文章目录 LeetCode刷题笔记-动态规划-day4 55. 跳跃游戏 1.题目 2.解题思路 3.代码 45. 跳跃游戏 II 1.题目 2.解题思路 3.代码 LeetCode刷题笔记-动态规划 ...
- leetcode分类刷题笔记
leetcode分类刷题笔记--基于python3 写在前面 1.做题如果实在想不出时间复杂度比较优的解法,可以先写出暴力解法,尝试在其基础上优化 2.排序.双指针.二分等--经常可以优化时间复杂度 ...
- 我收藏的谷歌和阿里大佬的刷题笔记
金三银四大家在准备校招.社招,或者闲暇的时候,都可以刷刷 Leetcode,保持良好的手感. 之前刷题,一直觉得漫无目的地刷,效率很低.后来发现了两个刷题笔记,谷歌大佬高畅和BAT大佬霜神写的 Lee ...
最新文章
- python udp client
- PostgreSQL 9.4版本的物化视图更新
- Modelsim10.7中文注释乱码问题
- Java 9:对可选的增强
- 怎样把连续的多个commit整理成1个?
- 双系统安装:Deepin 尝鲜
- configure: error: Library requirements (libpcre >= 7.8) not met
- 哈佛结构 Linux,哈佛结构与冯诺依曼结构区别
- 计算机基础知识试题和答案6,计算机基础知识试题及答案选择题(九)
- dism++封装系统使用教程_Dism++系统精简利器 10.1.4.7
- 锐浪报表加载List泛型数据
- Mac电脑没声音了怎么办?
- Cyclone v器件关键参数
- Android——超简单悬浮窗使用教程
- excel空白单元格自动下下填充上一个单元格的值
- JavaWeb 服务器与客户端储存
- 成人世界的人际交往中有哪些潜规则?
- Please, configure Web Facet first!
- 上海社科院:沪30岁以下青年购房压力
- linux:Nginx+https双向验证(数字安全证书)