《华为机试在线训练》之合唱队
题目描述
计算最少出列多少位同学,使得剩下的同学排成合唱队形
说明:
N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。
合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足存在i(1<=i<=K)使得T1<T2<......<Ti-1<Ti>Ti+1>......>TK。
你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。
输入描述:
整数N
输出描述:
最少需要几位同学出列
输入
8 186 186 150 200 160 130 197 200
输出
4
看题目中的要求,必须满足成合唱队的形式,这应该是关于递增数列的题目,要求一个数的左边都递增,右边都递减。这个时候就可以先求出每个数在最大递增子串中的位置,然后逆向求出每个数在最大递增子串中的位置。如下图所示:
![](/assets/blank.gif)
vector<int> vec(n), dp(n), dq(n);int i, k, j, ma = 0;for (i = 0; i < n; ++i){cin >> vec[i];dp[i] = 1;dq[i] = 1;}for (i = 1; i < n; ++i){for (j = 0; j < i; ++j){if (vec[i] > vec[j])dp[i] = max(dp[i], dp[j] + 1);}}for (i = n - 2; i >= 0; --i){for (j = n - 1; j > i; --j){if (vec[i] > vec[j])dq[i] = max(dq[i], dq[j] + 1);}}
![](/assets/blank.gif)
for (i = 0; i < n; ++i)ma = max(ma, dp[i] + dq[i] - 1);
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iomanip>
#include <math.h>
using namespace std;int main()
{int n;while (cin >> n){vector<int> vec(n), dp(n), dq(n);int i, k, j, ma = 0;for (i = 0; i < n; ++i){cin >> vec[i];dp[i] = 1;dq[i] = 1;}for (i = 1; i < n; ++i){for (j = 0; j < i; ++j){if (vec[i] > vec[j])dp[i] = max(dp[i], dp[j] + 1);}}for (i = n - 2; i >= 0; --i){for (j = n - 1; j > i; --j){if (vec[i] > vec[j])dq[i] = max(dq[i], dq[j] + 1);}}for (i = 0; i < n; ++i)ma = max(ma, dp[i] + dq[i] - 1);cout << n - ma << endl;}return 0;
}
《华为机试在线训练》之合唱队相关推荐
- 牛客网--华为机试在线训练10:字符个数统计
牛客网–华为机试在线训练10:字符个数统计 题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在ACSII码范围内(0~127).不在范围内的不作统计. 输入描述: 输入N个字符,字符在A ...
- 牛客网–华为机试在线训练9:提取不重复的数
牛客网–华为机试在线训练9:提取不重复的数 题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺 ...
- 牛客网–华为机试在线训练8:合并表记录
牛客网–华为机试在线训练8:合并表记录 题目描述 数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出. 输入描述: 先输入键值对的个 ...
- 牛客网–华为机试在线训练7:取近似值
牛客网–华为机试在线训练7:取近似值 题目描述 写出一个程序,接受一个正浮点数值,输出该数值的近似整数值.如果小数点后数值大于等于5,向上取整:小于5,则向下取整. 输入描述: 输入一个正浮点数值 输 ...
- 牛客网–华为机试在线训练6:质数因子
牛客网–华为机试在线训练6:质数因子 题目描述 功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 ) 最后一个数后面也要有空格 详细描述: 函数接 ...
- 牛客网–华为机试在线训练5:进制转换
牛客网–华为机试在线训练5:进制转换 题目描述 写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串.(多组同时输入 ) 输入描述: 输入一个十六进制的数值字符串. 输出描述: 输出该 ...
- 牛客网–华为机试在线训练4:字符串分隔
牛客网–华为机试在线训练4:字符串分隔 题目描述 •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组: •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输 ...
- 【To Debug】牛客网--华为机试在线训练3:明明的随机数
牛客网–华为机试在线训练3:明明的随机数 题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字, ...
- 牛客网--华为机试在线训练2:计算字符个数
牛客网–华为机试在线训练2:计算字符个数 题目描述 写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数.不区分大小写. 输入描述: 输入一个有字母 ...
- 牛客网--华为机试在线训练1:字符串最后一个单词的长度
牛客网–华为机试在线训练1:字符串最后一个单词的长度 题目地址: https://www.nowcoder.com/practice/8c949ea5f36f422594b306a2300315da? ...
最新文章
- python int str_python int str
- 1、Math类的常用方法
- dubbo+zookeeper与提供者、消费者之间端口通信问题(No provider available for the service)
- python程序格式框架的描述_python 程序语言设计(嵩天)-学习笔记(第二章python 程序实例解析)...
- 持续集成:部署发布篇
- C#中yield return用法
- C++学习之路 | PTA乙级—— 1041 考试座位号 (15 分)(精简)
- einops和einsum:直接操作张量的利器
- (05)FPGA内部资源
- 8004.ros2中添加boost依赖库写法
- [转]使用Git Submodule管理子模块
- 119. PHP 性能问题(2)
- 运维自动化之5 - 基于LVS实现4层负载均衡应用
- Log Parser Lizard 日志分析工具
- js抓取今日头条文章
- 【软件工程】敏捷宣言
- mysql系统设计论文_毕业论文管理系统的设计与实现(MyEclipse,MySQL)
- windows server 2012 R2登录密码忘了怎么办呢?
- 安河桥间奏为什么火_什么样的人会喜欢安和桥的间奏,初见的时,没想过后来会那么喜欢...
- study mysql
热门文章
- win7 64 系统中打开或关闭windows功能空白
- 两个PDF比较标出差异_轻松搞定PDF格式转换
- c语言大作业俄罗斯方块,VC++ 6.0 C语言实现俄罗斯方块详细教程
- Creo中如何通过参数控制模型颜色
- 如何从 Android 手机上的 SD 卡恢复已删除的照片
- java护肤品购物系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
- 当代家庭教育杂志当代家庭教育杂志社当代家庭教育编辑部2022年第31期目录
- Java中getter和setter的一些理解
- vant Weapp版本没有自带表单校验
- C语言 题目 1728: 字符串的查找删除