题目描述

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

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

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

输入输出格式

输入格式:

共二行。

第一行是一个整数 N(2≤N≤100) ,表示同学的总数。

第二行有 n 个整数,用空格分隔,第 i 个整数 Ti​(130≤Ti​≤230) 是第 i 位同学的身高(厘米)。

输出格式:

一个整数,最少需要几位同学出列。

输入输出样例

输入样例#1:

8
186 186 150 200 160 130 197 220

输出样例#1:

4

源代码

#include<iostream>
using namespace std;int cmp(int x,int y)
{if(x>y) return x;else return y;
}
int dp_rise[10000],dp_fall[10000];
int main()
{int n,high[10000];int rise_temp,fall_temp,temp;int max=1;//留下人数int i,j;cin>>n;//人数for(i=1;i<=n;i++)  {cin>>high[i];//每人身高dp_rise[i]=1;//无论是降序还是升序,留下的人数至少为1dp_fall[i]=1;//无论是降序还是升序,留下的人数至少为1}/*比较升序时取i位置和不取i位置哪个留下的人多 */for(i=1;i<=n;i++)//求以第i个数为终点的最长上升子序列长度{rise_temp=0;//记录第i 个数左边子序列最大长度for(j=1;j<i;j++)//搜索以第i 个数左边数为终点的最长上升子序列长度{if(high[i]>high[j])//若i位置大于j位置,则为上升序列{if(rise_temp<dp_rise[j])//若左端上升长度小于j位置                   rise_temp=dp_rise[j];//令第i 个数左边子序列最大长度为j位置}}dp_rise[i]=rise_temp+1;//比较得来留下人最多的方案}/*比较降序时取i位置和不取i位置哪个留下的人多 */for(i=n;i>=1;i--)//求以第i个数为终点的最长上升子序列长度{fall_temp=0;//记录第i 个数右边子序列最大长度for(j=n;j>i;j--)//搜索以第i 个数右边数为终点的最长下降子序列长度{if(high[i]>high[j])//若i位置大于j位置,则为下降序列{if(fall_temp<dp_fall[j])//若右端下降长度小于j位置                   fall_temp=dp_fall[j];//令第i 个数右边子序列最大长度为j位置}}dp_fall[i]=fall_temp+1;//比较得来留下人最多的方案}for(i=1;i<=n;i++)//比较何种情况时留下人数最多{temp=dp_rise[i]+dp_fall[i]-1;max=cmp(max,temp);}cout<<n-max<<endl;//出列人数=总人数-留下人数return 0;
}

合唱队形(洛谷-P1091)相关推荐

  1. 洛谷P1091 合唱队形

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

  2. 洛谷 P1091 合唱队形

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

  3. 洛谷 P1091 合唱队型

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

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

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

  5. 洛谷--橙色百道DP总结

    最近刷完了洛谷橙色DP大约一百道,算是发现了一些套路,就部分题目做一些总结. 大概分为三类 第一类,九大背包及其衍生 第二类,经典DP模型,如LCS,LIS等 第三类,实际问题背景的普通,环形,树上D ...

  6. 洛谷1091合唱队形

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

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

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

  8. P1091 合唱队形

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

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

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

最新文章

  1. 终于有篇看的懂的 B 树文章了!
  2. pom.xml中的artifactId是什么意思?
  3. 别小看不起眼的电阻,里面大有学问!
  4. 测试linux nginx,linux系统肿么检测安装了nginx
  5. php投票系统中各个文件的作用说明,PHP开发简单投票系统之投票页面功能模块(二)...
  6. Citrix XenDesktop中VDA无法注册到DDC案例分享(一)
  7. 【Git】Git如何在不提交当前分支的情况下切换到其它分支进行操作-git stash
  8. Golang遇到的一些问题总结
  9. 微信⼩程序——wxParse使⽤⽅法
  10. python关键词排名批量查排名_Python批量查询百度排名
  11. python兼职能挣多少钱-副业赚钱干货【4】Python程序员变现之路
  12. 解决本地笔记导入博客中图片无法显示的问题
  13. 优锘科技:森数据初体验
  14. BZOJ2794 Cloakroom【有限制的背包问题】
  15. XML 格式化转字符串
  16. 关于react-router-dom 6.0.1的基础写法 解决Error A <Route> is only ever to be used as the child of <Routes>
  17. Java中的上界与下界(? extends/super T)
  18. 观点 | 电动汽车变革进行时,芯片IP供应商扮演着怎样的角色?
  19. python编程midi键盘按键错乱_电脑键盘按键错乱怎么回事 电脑键盘按键错乱原因【图文】...
  20. 华为消费者业务公布2017上半年智能手机收入暴涨

热门文章

  1. 2022年轻人潮流爱好报告:被朋友圈高赞的神秘爱好,不烧钱还能脱单
  2. TensorFlow和Keras入门必读教程
  3. 加速 SpringBoot 应用开发,官方热部署神器真带劲!
  4. Mysql索引扫盲总结
  5. IDEA新特性:提前知道代码怎么走!
  6. IDEA优雅整合Maven+SSM框架(详细思路+附带源码)
  7. CTO怒了:再写if-else,逮着罚款1000!
  8. 收藏!架构师需要掌握的99条铁律
  9. 比excel更好用的免费拖拽报表—JimuReport 1.4.4新特性
  10. 架构设计 | 接口幂等性原则,防重复提交Token管理