合唱队形——线性dp
NN 位同学站成一排,音乐老师要请其中的 (N−K)(N−K) 位同学出列,使得剩下的 KK 位同学排成合唱队形。
合唱队形是指这样的一种队形:设 KK 位同学从左到右依次编号为 1,2…,K1,2…,K,他们的身高分别为 T1,T2,…,TKT1,T2,…,TK, 则他们的身高满足 T1<…<Ti>Ti+1>…>TK(1≤i≤K)T1<…<Ti>Ti+1>…>TK(1≤i≤K)。
你的任务是,已知所有 NN 位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。
输入格式
输入的第一行是一个整数 NN,表示同学的总数。
第二行有 NN 个整数,用空格分隔,第 ii 个整数 TiTi 是第 ii 位同学的身高(厘米)。
输出格式
输出包括一行,这一行只包含一个整数,就是最少需要几位同学出列。
数据范围
2≤N≤1002≤N≤100,
130≤Ti≤230130≤Ti≤230
输入样例:
8
186 186 150 200 160 130 197 220
输出样例:
4
思路:最长上升子序列+最长下降子序列
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;int n;
int h[110];
int f[110], ff[110];int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>h[i];f[i] = 1;ff[i] = 1;}for(int i=1;i<=n;i++)for(int j=1;j<i;j++)if(h[i]>h[j]) f[i] = max(f[i],f[j]+1);for(int i=n;i>=1;i--)for(int j=n;j>i;j--)if(h[i]>h[j]) ff[i] = max(ff[i],ff[j]+1);int ans = 0x3f3f3f3f;for(int i=1;i<=n;i++)ans = min(ans,n-f[i]-ff[i]+1);cout<<ans;return 0;
}
合唱队形——线性dp相关推荐
- P1091 合唱队形[单调性+DP]
题目来源:洛谷 题目描述 N位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,-,K,他们的身高 ...
- 【OpenJ_Bailian - 2711 】 合唱队形(dp,枚举中间顶点)
题干: N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1, 2, -, K,他们的 ...
- 【动态规划刷题笔记】线性dp:合唱队形(最长递增子序列的变体)
[NOIP2004 提高组] 合唱队形 - 洛谷 思路:最少出列,即挑出最多,即找最长递增子序列和最长递减子序列 设dp1[i]为以h[i]结尾的最长递增子序列 dp2[i]为以h[i]开头的最长递减 ...
- UOJ #214 合唱队形 (概率期望计数、DP、Min-Max容斥)
UOJ #214 合唱队形 (概率期望计数.DP.Min-Max容斥) 9个月的心头大恨终于切掉了!!!! 非常好的一道题,不知为何uoj上被点了70个差评. 题目链接: http://uoj.ac/ ...
- tyvj 1067 合唱队形 dp LIS
P1067 合唱队形 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2004 提高组 第三道 描述 N位同学站成一排,音乐老师要请其中的(N-K)位 ...
- 【DP】合唱队形(jzoj 1122)
合唱队形 jzoj 1122 题目大意: 有n个人,按一定的顺序站成一排,最少减去多少个人可以使队列以一个人为中心,两边分别递减 输入样例 8 186 186 150 200 160 130 197 ...
- 动态规划 —— 线性 DP
[概述] 线性动态规划,是较常见的一类动态规划问题,其是在线性结构上进行状态转移,这类问题不像背包问题.区间DP等有固定的模板. 线性动态规划的目标函数为特定变量的线性函数,约束是这些变量的线性不等式 ...
- 合唱队形(递增再递减的最长子序列)
题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1, 2, -, K,他们的 ...
- P1091 合唱队形(LIS)
题目描述 NNN位同学站成一排,音乐老师要请其中的(N−KN-KN−K)位同学出列,使得剩下的KKK位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,-,K1,2, ...
- LuoGU 线性DP
P1091 合唱队形 看一下题解吧,你好i需要正反搜一下lcs ,然后合并 #include<bits/stdc++.h> using namespace std; #define LOA ...
最新文章
- python中json模块博客园_Python中的Json模块详解
- 通过批处理文件自动安装apk到手机
- 伟大:看谷歌如何造福人类健康事业
- 2、Keepalived提供日志与双主模型演示
- Visual Studio提示——DebuggerDisplay
- 暴风影音官网、App 挂了;工信部总结“携号转网”试运行情况;Zorin OS 15 Lite 发布 | 极客头条...
- CDR X8快速绘制八瓣花教程
- 『IT视界』 [互联网]联想裁员千人不影响国内业务 每年节约2.5亿
- 【计算机基础】五笔字根分解图
- 生物信息学习——tophat使用手册
- 视频分割合并软件哪个好用:试试Fast Video Cutter Joiner吧
- 关于JS如何实现图片闪烁
- SDN:mininet交换机流表操作
- UFT 12 – Top 5 New Features you are going to Love
- UEFI and legacy
- 如何搭建真正能洞悉数据的领导驾驶舱
- ROC受试曲线AUC[TPR/ FPR/截断点/StratifiedKFold/KFold]
- 数据结构的基本概念习题
- C语言 最大公约数三种方法
- 关于驰骋工作流引擎的批处理设计与实现