P1091 合唱队形

题目描述

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

合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足T1<...<Ti>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。

分析:

方法一:要找到这个点为止的从左开始的最长上升不连续子序列;以及从右开始的最长上升不连续子序列。

方法二:求一遍最长上升子序列再求一遍最长下降子序列用总人数减去最长上升子序列的人数减去最长下降子序列的人数再加上一就0k了。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 long long t,n,a[101],i,p[101],maxi,j,x[101];
 4 int main()
 5 {
 6
 7     cin>>n;memset(a,0,sizeof(a));memset(p,0,sizeof(p));maxi=-1;memset(x,0,sizeof(x));
 8     for(i=1;i<=n;i++)
 9       cin>>a[i],p[i]=1,x[i]=1;
10       for(i=2;i<=n;i++)
11          for(j=1;j<i;j++)
12            if(a[i]>a[j])
13             p[i]=max(p[j]+1,p[i]);
14             for(i=n ;i>=1 ;i--)
15          for(j=n ;j>i;j--)
16          if(a[i]>a[j]&&x[i]<x[j]+1) x[i]=x[j]+1;
17                   for(i=1;i<=n;i++)
18                      if(p[i]+x[i]>maxi)
19                        maxi=x[i]+p[i];
20                        cout<<n-maxi+1<<endl;
21     return 0;
22 }

转载于:https://www.cnblogs.com/Renyi-Fan/p/7426225.html

P1091 合唱队形相关推荐

  1. 洛谷P1091 合唱队形

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

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

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

  3. P1091 合唱队形(LIS)

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

  4. 洛谷 P1091 合唱队形

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

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

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

  6. Luogu P1091 合唱队形

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

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

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

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

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

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

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

最新文章

  1. 九度 1408 寻找表达式 (中缀转后缀)
  2. 计算字符串和文件的MD5值
  3. HoneyBadgerBFT:一个网络环境无关的Byzantine容错的分布式共识协议
  4. JavaScript中的预解析(变量提升)介绍!
  5. boost::mp11::mp_starts_with相关用法的测试程序
  6. P3197 [HNOI2008]越狱(快速幂)
  7. Activiti中的高级脚本:自定义配置注入
  8. 实现Modbus TCP多网段客户端应用
  9. vue中router-link绑定click失效
  10. 用c语言画图的步骤,怎样用c语言画图
  11. 64. 合并排序数组 II
  12. android 自动发短信的代码,Android点击按钮时自动发送短信
  13. 阻滞增长函数matlab拟合,matlab指数增长和阻滞增长拟合代码讲课稿
  14. android 检测是否模拟器,Android全面检测设备是否模拟器
  15. MYSQL数据库学习总结
  16. 需要知道的华为、锐捷、H3C交换机命令
  17. 虚拟机Linux系统无法联网的解决方法
  18. 阻止浏览器默认行为事件
  19. TMS28027输出PWM波例程解析
  20. Microsoft Outlook 2019 for mac(电子邮件和日历工具)

热门文章

  1. 你见过哪些令你瞠目结舌的 JavaScript 代码技巧?
  2. qpsk的matlab平方根升余,【求助】求助:【QPSK功率谱密度的matlab的代码】 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
  3. 系统快捷方式java_java中这么创建界面快捷方式图标 代码
  4. python3.7运行报错_Python 3.7 环境下运行 scrapy crawl 报错 def write(self, data, async=False)?...
  5. 与计算机技术发展密切相关的科学家,关于计算机科学与技术的发展趋势探究
  6. subversion mysql_MySQL数据库之httpd+mysql+php+subversion
  7. linux ipc shmget 例子,Linux IPC之共享内存C 事例(示例代码)
  8. php swoole 游戏框架,Swoole 高性能php框架
  9. c++两个文档匹配数据_《搜索和推荐中的深度匹配》——1.2 搜索和推荐中匹配统一性...
  10. 阿里MySQL读写一致_缓存与数据库读写一致的解决方案