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

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

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

输入输出格式
输入格式:
输入文件chorus.in的第一行是一个整数N(2<=N<=100),表示同学的总数。第一行有n个整数,用空格分隔,第i个整数Ti(130<=Ti<=230)是第i位同学的身高(厘米)。

输出格式:
输出文件chorus.out包括一行,这一行只包含一个整数,就是最少需要几位同学出列。

输入输出样例
输入样例#1:
8
186 186 150 200 160 130 197 220
输出样例#1:
4
说明
对于50%的数据,保证有n<=20;

对于全部的数据,保证有n<=100。

做法很简单,依次枚举所有人为最中间的人 求一下第一个人到这个人的最长上升子序列(LIS),在反着求一下这个人到最后一个人的LIS相加为此种情况的最长队列,把所有人全枚举一次找出所有情况的最长队列,用总人数减去最长队列即为最少出列同学。
PS:因为一次dp就能求出所有的LIS值,所以时间复杂度不会爆。
code:

#include<cstdio>
#include<iostream>
using namespace std;int n,ans;
int a[105],ans1[105],ans2[105];int main(){scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);for(int i=1;i<=n;i++) {ans1[i]=1;for(int j=1;j<i;j++) if(a[i]>a[j]) ans1[i]=max(ans1[i],ans1[j]+1);   }for(int i=n;i;i--) {//从n到1再来一次ans2[i]=1;for(int j=n;j>i;j--)if(a[j]<a[i]) ans2[i]=max(ans2[i],ans2[j]+1);for(int i=1;i<=n;i++) ans=max(ans,ans1[i]+ans2[i]-1);printf("%d",n-ans);return 0;
}

转载于:https://www.cnblogs.com/Menteur-Hxy/p/9248042.html

洛谷 P1091 合唱队形相关推荐

  1. 洛谷P1091 合唱队形

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

  2. 洛谷1091合唱队形

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

  3. 洛谷 P1091 合唱队型

    很容易想到维护一个最长上升子序列和一个最长下降子序列.然后枚举一个点k,取所有以k结尾的最长上升子序列和以k开头的最长下降子序列的长度的和中最大的,表示留下的人数.再用总人数减去这个,等于出队人数 另 ...

  4. P1091 合唱队形

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

  5. 合唱队形(洛谷-P1091)

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

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

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

  7. P1091 合唱队形(LIS)

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

  8. 91.91p10.space v.php,luogu P1091 合唱队形

    任务计划推了很久才做www 从两头开始的单调上升队列 没啥可说的 #include #include using namespace std; #define maxn 110 int a[maxn] ...

  9. Luogu P1091 合唱队形

    思路 看题目中给出的式子,其实就是一半是最长上升子序列,一半是最长下降子序列.那么就需要进行两次DP,第一次求最长上升子序列,第二次求最长下降子序列,然后枚举序列的最高点.这个从这个最高点劈开.维护一 ...

最新文章

  1. ImageLazyLoad-图片随着滚动而进行加载
  2. boost::function_types::result_type用法的测试程序
  3. java页面请求跑批处理sql的有关问题
  4. matlab水力学工具箱,新浪潮水工设计软件
  5. 【机器学习-数据科学】第三节:数据分析实例 分析MovieLens电影数据
  6. day27 CRM delete action 嵌入CRM
  7. ModalPopupExtender控件和gridview的结合使用
  8. 轻松构建微服务之分布式配置中心
  9. java inputstream编码格式_纯文本-FileInputStream的编码与解码方式
  10. 大数据Hadoop快速入门
  11. ps怎么更改背景图层大小_ps修改背景教程
  12. 华为交换机修改BootROM密码
  13. 【小程序项目开发 -- 京东商城】uni-app 商品分类页面(下)
  14. Error: Cannot find module ‘babel-preset-es2015‘
  15. http接口测试:了解协议、请求方法、响应状态码
  16. MANIFEST.MF的用途
  17. python 微信授权 昵称乱码解决
  18. POI文件上传及使用详解
  19. 小白也能轻松看懂的lora物联网!
  20. ArcGIS使用笔记(2)——邻近搜索

热门文章

  1. vs2019新建android生成app,VS2017 VS2019创建离线安装包
  2. resnet152训练_Resnet-152的图像预处理
  3. mysql导入10g数据库_oracle10g数据库导入、导出(exp/imp、expdp/impdp)
  4. kstools工具是什么牌子_2020年平衡车推荐,电动平衡车哪个牌子好?老司机教你如何选购电动平衡车...
  5. java商城_基于Java,jfinal web框架开发出微信商城,微信分销商城源码分享
  6. 九、ES6的箭头函数
  7. LeetCode 1156. 单字符重复子串的最大长度
  8. 程序员面试金典 - 面试题 17.22. 单词转换(BFS)
  9. LeetCode 459. 重复的子字符串(数学)
  10. LeetCode 102. 二叉树的层次遍历(BFS)