【题目描述】

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

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

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

【输入】

输入的第一行是一个整数N(2≤N≤100),表示同学的总数。第二行有n个整数,用空格分隔,第i个整数Ti(130≤Ti≤230)是第i位同学的身高(厘米)。

【输出】

输出包括一行,这一行只包含一个整数,就是最少需要几位同学出列。

【输入样例】

8
186 186 150 200 160 130 197 220

【输出样例】

4

解题思路

这题就是dp入门题,就是正着求一边最长上升子序列,反着求一边最长上升子序列,然后对于每一个点的两次上升序列求和,取一个最大值

#include <iostream>
#include<bits/stdc++.h>
#define N 5001
#define INF 0x3f3f3f3f
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define rep(i,a,n) for(int i=a;i<=n;i++)
typedef long long ll;
using namespace std;
int g[N],f[N],a[N];
int main(){int n,res=0;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];//正着求一遍最长上升子序列for(int i=1;i<=n;i++){g[i]=1;//记录最长for(int j=1;j<i;j++){if(a[j]<a[i])g[i]=max(g[i],g[j]+1);}}//反着求一遍最长上升子序列for(int i=n;i;i--){f[i]=1;//记录最长for(int j=n;j>i;j--){if(a[j]<a[i])f[i]=max(f[i],f[j]+1);}}//最后判断每个位置的答案,减一是因为中间的那个点被多加了一次for(int i=1;i<=n;i++){res=max(res,g[i]+f[i]-1);}cout<<n-res<<endl;return 0;}

合唱队形(动态规划)相关推荐

  1. 动态规划练习2 [合唱队形]

    N 位同学站成一排,音乐老师要请其中的 (N-K) 位同学出列,使得剩下的 K 位同学排成合唱队形. 合唱队形是指这样的一种队形:设 K 位同学从左到右依次编号为 1 , 2 -, K ,他们的身高分 ...

  2. 【动态规划刷题笔记】线性dp:合唱队形(最长递增子序列的变体)

    [NOIP2004 提高组] 合唱队形 - 洛谷 思路:最少出列,即挑出最多,即找最长递增子序列和最长递减子序列 设dp1[i]为以h[i]结尾的最长递增子序列 dp2[i]为以h[i]开头的最长递减 ...

  3. P1091 [NOIP2004 提高组] 合唱队形(动态规划+LIS)

    P1091 [NOIP2004 提高组] 合唱队形 Part1:链接: 点我就送屠龙宝刀[doge] Part2:题目 Part3:思路 隔了这么久,屑人再次捡起了他的节操,洗了洗,然后开始续写他的苦 ...

  4. 合唱队形(递增再递减的最长子序列)

    题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1, 2, -, K,他们的 ...

  5. P1091 合唱队形[单调性+DP]

    题目来源:洛谷 题目描述 N位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,-,K,他们的身高 ...

  6. P1091 合唱队形(LIS)

    题目描述 NNN位同学站成一排,音乐老师要请其中的(N−KN-KN−K)位同学出列,使得剩下的KKK位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,-,K1,2, ...

  7. 洛谷P1091 合唱队形

    洛谷P1091 合唱队形 题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,-,K他 ...

  8. UOJ #214 合唱队形 (概率期望计数、DP、Min-Max容斥)

    UOJ #214 合唱队形 (概率期望计数.DP.Min-Max容斥) 9个月的心头大恨终于切掉了!!!! 非常好的一道题,不知为何uoj上被点了70个差评. 题目链接: http://uoj.ac/ ...

  9. tyvj 1067 合唱队形 dp LIS

    P1067 合唱队形 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2004 提高组 第三道 描述 N位同学站成一排,音乐老师要请其中的(N-K)位 ...

最新文章

  1. 完全基于Transformer的目标检测器,ICLR匿名论文实现视觉、检测统一
  2. 如何避免操作系统中多线程资源竞争的互斥与同步?
  3. Deepfake这次不换脸了,直接换了座城市
  4. OneAlert 入门(一)——事件流
  5. C#获取引用组件的版本信息
  6. 在anaconda中运行jupyter notebook,无法自动打开浏览器的解决方案,亲测100%有效
  7. 从oracle里面取直,45个非常有用的 Oracle 查询语句小结
  8. 软考高级网络规划设计师5天修炼
  9. DSP的CMD文件 RUN_START
  10. matlab跟踪控制程序,机器人轨迹跟踪控制方法研究(含MATLAB程序)
  11. Exception: ROM is missing for pong, see https://github.com/openai/atari-py#roms for instructions
  12. Js学习之拖拉事件(drag)
  13. 人这一辈子,渡你的只有两个人
  14. 《转》关于ath5k网卡驱动中beacon的发送过程(特别是timestamp字段)
  15. Java 调用Python+Opencv实现图片定位
  16. 数据结构栈的操作,初始化栈,进栈,出栈,读取栈顶元素;
  17. 如何在没有电缆的情况下流塞恩费尔德
  18. ZT210打印标签方法及常见问题20230110
  19. JAVA Base64加密解密
  20. matlab 突破交易策略,Matlab量化交易策略之 横盘突破策略(附源码)

热门文章

  1. 使用飞桨PaddleHub实现将视频动作转化为皮影戏
  2. 一文搞懂各种架构(业务架构、应用架构、数据架构...
  3. js打开服务器缓存文件夹路径,浅谈微信页面入口文件被缓存解决方案
  4. 比亚迪“亮刀”、宁德时代“狂奔”,动力电池市场的巨头混战几时休?
  5. 用python读取txt文件中的数据并画各类图形展示_Python实现读取txt文件中的数据并绘制出图形操作示例...
  6. 工作了,才知道......
  7. Android shortcut的使用及源码分析
  8. 【计算机系统】CPU指令执行流程与指令流水线原理
  9. 医疗器械生物相容性评价
  10. 五大编程语言,你知道哪门最适合你吗?让我给你仔细分析一波