洛谷 P1091 合唱队形
题目描述
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 合唱队形相关推荐
- 洛谷P1091 合唱队形
洛谷P1091 合唱队形 题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,-,K他 ...
- 洛谷1091合唱队形
题目描述 N位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,-,K,他们的身高分别为T1,T ...
- 洛谷 P1091 合唱队型
很容易想到维护一个最长上升子序列和一个最长下降子序列.然后枚举一个点k,取所有以k结尾的最长上升子序列和以k开头的最长下降子序列的长度的和中最大的,表示留下的人数.再用总人数减去这个,等于出队人数 另 ...
- P1091 合唱队形
P1091 合唱队形 题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2-,K,他们的 ...
- 合唱队形(洛谷-P1091)
题目描述 N 位同学站成一排,音乐老师要请其中的( N−K )位同学出列,使得剩下的 KK 位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为 1,2,-,K ,他们的身高 ...
- P1091 合唱队形[单调性+DP]
题目来源:洛谷 题目描述 N位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,-,K,他们的身高 ...
- P1091 合唱队形(LIS)
题目描述 NNN位同学站成一排,音乐老师要请其中的(N−KN-KN−K)位同学出列,使得剩下的KKK位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,-,K1,2, ...
- 91.91p10.space v.php,luogu P1091 合唱队形
任务计划推了很久才做www 从两头开始的单调上升队列 没啥可说的 #include #include using namespace std; #define maxn 110 int a[maxn] ...
- Luogu P1091 合唱队形
思路 看题目中给出的式子,其实就是一半是最长上升子序列,一半是最长下降子序列.那么就需要进行两次DP,第一次求最长上升子序列,第二次求最长下降子序列,然后枚举序列的最高点.这个从这个最高点劈开.维护一 ...
最新文章
- ImageLazyLoad-图片随着滚动而进行加载
- boost::function_types::result_type用法的测试程序
- java页面请求跑批处理sql的有关问题
- matlab水力学工具箱,新浪潮水工设计软件
- 【机器学习-数据科学】第三节:数据分析实例 分析MovieLens电影数据
- day27 CRM delete action 嵌入CRM
- ModalPopupExtender控件和gridview的结合使用
- 轻松构建微服务之分布式配置中心
- java inputstream编码格式_纯文本-FileInputStream的编码与解码方式
- 大数据Hadoop快速入门
- ps怎么更改背景图层大小_ps修改背景教程
- 华为交换机修改BootROM密码
- 【小程序项目开发 -- 京东商城】uni-app 商品分类页面(下)
- Error: Cannot find module ‘babel-preset-es2015‘
- http接口测试:了解协议、请求方法、响应状态码
- MANIFEST.MF的用途
- python 微信授权 昵称乱码解决
- POI文件上传及使用详解
- 小白也能轻松看懂的lora物联网!
- ArcGIS使用笔记(2)——邻近搜索
热门文章
- vs2019新建android生成app,VS2017 VS2019创建离线安装包
- resnet152训练_Resnet-152的图像预处理
- mysql导入10g数据库_oracle10g数据库导入、导出(exp/imp、expdp/impdp)
- kstools工具是什么牌子_2020年平衡车推荐,电动平衡车哪个牌子好?老司机教你如何选购电动平衡车...
- java商城_基于Java,jfinal web框架开发出微信商城,微信分销商城源码分享
- 九、ES6的箭头函数
- LeetCode 1156. 单字符重复子串的最大长度
- 程序员面试金典 - 面试题 17.22. 单词转换(BFS)
- LeetCode 459. 重复的子字符串(数学)
- LeetCode 102. 二叉树的层次遍历(BFS)