时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:4546

解决:1445

题目描述:

N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形。
合唱队形是指这样的一种队形:设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位同学的身高(厘米)。

输出:

可能包括多组测试数据,对于每组数据,
输出包括一行,这一行只包含一个整数,就是最少需要几位同学出列。

样例输入:
  1. 8
  2. 186 186 150 200 160 130 197 220
样例输出:
  1. 4

求两次最长不降子序列。注意用scanf输入,cin超时(亲测)。

  1. //Asimple
  2. //#include <bits/stdc++.h>
  3. #include <iostream>
  4. #include <sstream>
  5. #include <algorithm>
  6. #include <cstring>
  7. #include <cstdio>
  8. #include <vector>
  9. #include <cctype>
  10. #include <cstdlib>
  11. #include <stack>
  12. #include <cmath>
  13. #include <set>
  14. #include <map>
  15. #include <string>
  16. #include <queue>
  17. #include <limits.h>
  18. #include <time.h>
  19. #define INF 0xfffffff
  20. #define mod 100000
  21. #define PI 3.14159265358979323
  22. #define swap(a,b,t) t = a, a = b, b = t
  23. #define CLS(a, v) memset(a, v, sizeof(a))
  24. #define debug(a) cout << #a << " = " << a <<endl
  25. #define dobug(a, b) cout << #a << " = " << a << " " << #b << " = " << b << endl
  26. using namespace std;
  27. typedef long long ll;
  28. const int maxn = ;
  29. int n, m, p, num, T, k, len, ans, sum, x, y, z;
  30. int a[maxn];
  31.  
  32. void input() {
  33. int dp1[maxn], dp2[maxn];
  34. while( ~scanf("%d", &n) ){
  35. for(int i=; i<n; i++) {
  36. scanf("%d", &a[i]);
  37. dp1[i] = ;
  38. dp2[i] = ;
  39. }
  40. dp1[] = ;
  41. dp2[] = ;
  42. for(int i=; i<n; i++) {
  43. dp1[i] = ;
  44. for(int j=; j<i; j++) {
  45. if( a[i]>a[j] ) {
  46. dp1[i] = max(dp1[i], dp1[j]+);
  47. }
  48. }
  49. }
  50. for(int i=n-; i>=; i--) {
  51. dp2[i] = ;
  52. for(int j=n-; j>i; j--) {
  53. if( a[i]>a[j] ) {
  54. dp2[i] = max(dp2[i], dp2[j]+);
  55. }
  56. }
  57. }
  58. int Max = ;
  59. for(int i=; i<n; i++) {
  60. Max = max(Max, dp1[i]+dp2[i]-);
  61. }
  62. cout << n - Max << endl;
  63. }
  64. }
  65.  
  66. int main(){
  67. input();
  68. return ;
  69. }

JOBDU 题目1131:合唱队形的更多相关文章

  1. 九度OJ 1131 合唱队形 -- 动态规划(最长递增子序列)

    题目地址:http://ac.jobdu.com/problem.php?pid=1131 题目描述: N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合 ...

  2. P1091 合唱队形题解(洛谷,动态规划LIS,单调队列)

    先上题目 P1091 合唱队形(点击打开题目) 题目解读: 1.由T1​<...<Ti​和Ti​>Ti+1​>…>TK​可以看出这题涉及最长上升子序列和最长下降子序列 2 ...

  3. 九度oj 题目1131:合唱队形

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

  4. 九度OJ 1131:合唱队形 (DP、最长上升下降序列)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2865 解决:881 题目描述: N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形. ...

  5. 合唱队形2(洛谷U5874)

    题目背景 上次老师挑出来的(N-K)位同学很不高兴,于是他们准备自己组建合唱队形.他们请了kkk来帮忙. 题目描述 他们安排了一个动作--手拉着手唱一首歌(就是他们围成一个圈).如果有两个相邻的同学的 ...

  6. 合唱队形2 洛谷U5874

    题目背景 上次老师挑出来的(N-K)位同学很不高兴,于是他们准备自己组建合唱队形.他们请了kkk来帮忙. 题目描述 他们安排了一个动作——手拉着手唱一首歌(就是他们围成一个圈).如果有两个相邻的同学的 ...

  7. 【dp】合唱队形

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

  8. 洛谷 P1091 合唱队形

    \[传送门在这里呀\] 题目描述 \(N\)位同学站成一排,音乐老师要请其中的\((N-K)\)位同学出列,使得剩下的\(K\)位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次 ...

  9. 洛谷p1091合唱队形题解

    题目 合唱队形首先要满足的是从1这个位置到中间任意的位置为单增的,从中间任意的位置到最后是单减的,且长度最长.这样才能满足出列的同学最少. 如果要满足这个条件那么我们可以先预处理出每个点的从前找的最长 ...

随机推荐

  1. [QGLViewer]3D场景鼠标点击位置

    重载鼠标事件: void AxMapControl::mousePressEvent(QMouseEvent* e) { switch(currentTool) { case AX_DRAW_DIRE ...

  2. es7新特性 includes用法

    返回数组是否包含某个元素 var array1 = [1, 2, 3]; console.log(array1.includes(2)); // expected output: true

  3. 虚拟机开启时 VMware Authorization Service 这个服务找不到的解决办法

    有些时候我们启动虚拟机 会出现 The VMware Authorization Service is not running 正常情况下我们只要进 我的电脑-------> 管理------- ...

  4. 26-Python3 面向对象

    26-Python3 面向对象 ''' 面向对象技术简介 ''' ''' 类定义 ''' ''' 类对象 ''' class MyClass: i = 12345 def f(self): retur ...

  5. [LeetCode] 111. Minimum Depth of Binary Tree_Easy tag:DFS

    Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shor ...

  6. IntelliJ IDEA 普通java工程如何转为maven工程

    1.项目上右键 Add Framework Support. 2.选择maven,点击OK.

  7. linux安装svn客户端rabbitvcs

    我们都知道,自从svn出道以来,很多人都预言,cvs将会被其取代.就如同他们预言maven要取代ant一样.可见,svn的流行.在Windows中,最常用到的开源免费的svn客户端就是Tortoise ...

  8. (转载)常用正则表达式大全!(例如:匹配中文、匹配html)

    正则匹配java注意点: 如果加 ^[\n]* 表示替换遇到 \n 的前后内容,如果加[\n]表示替换\n本处内容 原文地址:http://blog.csdn.net/dl020840504/arti ...

  9. ROSETTA使用技巧随笔--RosettaLigand Docking

    时间不充分,简单记录下自己实践过程中的做法: 1. 首先,非标准残基都需要转换成.params文件,使用 <path-to-Rosetta>/main/source/scripts/pyt ...

  10. OEMCC 13.2 安装部署

    需求:安装部署OEM 13.2 环境:两台主机,系统RHEL 6.5,分别部署OMS和OMR: OMS,也就是OEMCC的服务端 IP:192.168.1.88 内存:12G+ 硬盘:100G+ OM ...