题目描述

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

合唱队形是指这样的一种队形:设K位同学从左到右依次编号为\(1,2,…,K\),他们的身高分别为\(T_1,T_2,…,T_K\), 则他们的身高满足\(T_1<...>…>T_K(1 \le i \le K)\)

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

输入输出格式

输入格式:

共二行。

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

第二行有nn个整数,用空格分隔,第\(i\)个整数\(T_i(130 \le T_i \le 230)\)是第\(i\)位同学的身高(厘米)。

输出格式:

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

输入输出样例

输入样例#1:

8

186 186 150 200 160 130 197 220

输出样例#1:

4

说明

对于\(50%\)的数据,保证有\(n \le 20n≤20\);

对于全部的数据,保证有\(n \le 100n≤100\)。

思路

此题是动态规划的基础题之一,我太lj了,最后想不出来怎么处理来得到最大值qwq

和日常生活中照照片一样,这个题要求的合唱队形要求两边低,中间高,也就是前一段是递增的,后一段是递减的,注意:并不一定正好分为左右人数相等的两半。

从左边开始,求出到每个数存在的最长上升子序列,然后再从右边做一次一样的操作,这样就能求出每个数字所在的上升子序列与下降子序列,分别用两个数组b和c记录

然后for循环进行枚举,求出b[i]+c[i]的最大值,最大值所对应的i就是i作为最高点时,场上留下的人最多,最后结果就是n-maxn+1,因为i位置的同学在计算maxn的时候被算了两次。

代码

#include

#define N 10100

#define INF 0x7f

using namespace std;

int a[N],b[N],c[N];

int main() {

int n;

scanf("%d",&n);

for(int i=1; i<=n; i++) {

scanf("%d",&a[i]);

}

for(int i=1; i<=n; i++) {

b[i]=1;

for(int j=1; j

if(a[i]>a[j]&&b[i]

b[i]=b[j]+1;

}

}

}

for(int i=n; i>0; i--) {

c[i]=1;

for(int j=n; j>i; j--) {

if(a[i]>a[j]&&c[i]

c[i]=c[j]+1;

}

}

}

int maxn=-INF;

for(int i=1; i<=n; i++) {

if (b[i]+c[i]>maxn)

maxn=b[i]+c[i];

}

maxn=n-maxn+1;

cout<

return 0;

}

合唱队形c语言编程,洛谷 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. 合唱队形(洛谷-P1091)

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

  5. 洛谷1091合唱队形

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

  6. C语言之洛谷刷题之路---顺序结构

    一顺序结构 B2002 Hello,World! #include <stdio.h>int main() {printf("Hello,World! \n");ret ...

  7. 洛谷p1200题目c语言代码,洛谷P1200 [USACO1.1]你的飞碟在这儿

    题目描述 众所周知,在每一个彗星后都有一只UFO.这些UFO时常来收集地球上的忠诚支持者.不幸的是,他们的飞碟每次出行都只能带上一组支持者.因此,他们要用一种聪明的方案让这些小组提前知道谁会被彗星带走 ...

  8. 洛谷题库P1765手机C语言,[模拟] [洛谷] P1765 手机

    还是困扰了我不少时间的 最早的思路是把题上的串穷举 ↓ 12abc3def4ghi5jkl6mno7pqrs8tuv9wxyz 设按键次数 t                             ...

  9. 洛谷 - 试炼场(全部题目备份)

    整理的算法模板合集: ACM模板 目录 1.新手村 1 - 1 洛谷的第一个任务 1 - 2 顺序与分支 1 - 3 循环!循环!循环! 1 - 4 数组 1 - 5 简单字符串 1 - 6 过程函数 ...

  10. 洛谷 P5727 【深基5.例3】冰雹猜想

    C语言基础系列文章 C语言 五种方法输出100以内的素数(质数) 源码 C语言分支结构超基础编程习题整理 详细分析附源码 C语言题解 洛谷P1614 爱与愁的心痛 详细分析源码 C语言题解 P5719 ...

最新文章

  1. AlarmManager与PendingIntent的联合使用(二)
  2. 小学计算机技术指导纲要,《中小学信息技术课程指导纲要(试行)》
  3. POJ 1936 字符匹配(水题)
  4. vue 每次弹框都初始化
  5. linux命令格式与快捷键
  6. python3 中的Json序列化、反序列化 和 字符编码的问题解决
  7. Linux命令(五)之service服务查找、启动/停止等相关操作
  8. 企业信息安全模型(成熟度模型)
  9. SQL注入风险高,手写 SQL 须谨慎
  10. JSON的4种解析方式使用以及对比
  11. android和夜神模拟器哪个好,天天模拟器和夜神安卓模拟器哪个好 两者功能对比...
  12. tensorflow-serving docker模型部署(以mnist为例)
  13. Yolov5笔记--检测bilibili下载好的视频
  14. 【图像隐藏】基于小波变换DWT实现数字水印嵌入提取含各类攻击附matlab代码
  15. 基于MATLAB的多进制数字调制信号的矢量星座图分析
  16. 《Lynda.com XML 必备教程》(Lynda.com XML Essential Training)CFE 教程
  17. 数字孪生 智慧工厂可视化决策系统
  18. [MODIS数据处理#2]常用的Arcmap内置工具(一)
  19. 常用集成电路功能简介 AD
  20. 【来日复制粘贴】使某列筛选的结果映射到标题部分

热门文章

  1. 什么是USBHOST、USB Slave和USB OTG?它们之间有什么区别 USB、MiniUSB、MicroUSB
  2. c语言json使用,cJSON使用(二)
  3. OA会议 04 (查询会议签字)
  4. 访问chm文件出现 已取消到该网页的导航的解决方法
  5. 识别合格ToB产品经理
  6. 深度学习 再次爆发_如何教自己再次学习
  7. CSDN:2020 年度 CSDN 博客之星评选——28 号【沉默王二】,感谢你投上的宝贵一票,感谢!
  8. 双网卡 跃点_有关win7 pppoe拨号网络的跃点数及win7 多路internet访问带宽叠加 - Microsoft Community...
  9. 【转】京东抢购服务高并发实践
  10. Android Backup功能之全面实战