NOIP2004提高组 合唱队形
N 位同学站成一排,音乐老师要请其中的 (N−K) 位同学出列,使得剩下的 K 位同学排成合唱队形。 合唱队形是指这样的一种队形:设 K 位同学从左到右依次编号为 1,2…,K,他们的身高分别为 T1,T2,…,TK, 则他们的身高满足 T1<…<Ti>Ti+1>…>TK(1≤i≤K)。 你的任务是,已知所有 N 位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。输入格式
输入的第一行是一个整数 N,表示同学的总数。第二行有 N 个整数,用空格分隔,第 i 个整数 Ti 是第 i 位同学的身高(厘米)。输出格式
输出包括一行,这一行只包含一个整数,就是最少需要几位同学出列。数据范围
2≤N≤100,
130≤Ti≤230
输入样例:
8
186 186 150 200 160 130 197 220
输出样例:
4
首先分析题目
T1<T2<…<Ti>Ti+1>…>TK
就说明以Ti为分界线Ti的左边单调递增,而Ti的右边从右向左看也是单调递增
所以可以用两次最长上升子序列问题来解决
首先我们开辟两个数组f和g这两个数组,f是求i左边的最长上升子序列,g是求右边最长上升子序列
在将两个数组相加起来找到最大值,再让n减去最大值得到的就是答案
#include<stdio.h>
#define N 1100
int n;
int f[N],a[N],g[N];
int max(int a,int b)
{return a>b?a:b;
}
int main()
{int res=0;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]);//求正方向的最长上升子序列for(int i=1;i<=n;i++){f[i]=1;for(int j=1;j<i;j++){if(a[j]<a[i])f[i]=max(f[i],f[j]+1);}}//求反方向的最长上升子序列for(int i=n;i>0;i--){g[i]=1;for(int j=n;j>i;j--){if(a[j]<a[i])g[i]=max(g[i],g[j]+1);}}for(int i=1;i<=n;i++)res=max(res,g[i]+f[i]-1);printf("%d",n-res);return 0;
}
NOIP2004提高组 合唱队形相关推荐
- P1091 [NOIP2004 提高组] 合唱队形(动态规划+LIS)
P1091 [NOIP2004 提高组] 合唱队形 Part1:链接: 点我就送屠龙宝刀[doge] Part2:题目 Part3:思路 隔了这么久,屑人再次捡起了他的节操,洗了洗,然后开始续写他的苦 ...
- [NOIP2004 提高组] 合唱队形-题解
原题一览 问题描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2-,K,他们的身高分别为T ...
- 洛谷——P1089 [NOIP2004 提高组] 津津的储蓄计划
P1089 [NOIP2004 提高组] 津津的储蓄计划 题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同. 为 ...
- noi题库c语言 1.5答案,NOIP2004提高组复赛试题答案c语言版
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 bool finish, hash[256], used[27]; int n, stk[27]; string a, b, c; string word ...
- 【动态规划刷题笔记】线性dp:合唱队形(最长递增子序列的变体)
[NOIP2004 提高组] 合唱队形 - 洛谷 思路:最少出列,即挑出最多,即找最长递增子序列和最长递减子序列 设dp1[i]为以h[i]结尾的最长递增子序列 dp2[i]为以h[i]开头的最长递减 ...
- tyvj 1067 合唱队形 dp LIS
P1067 合唱队形 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2004 提高组 第三道 描述 N位同学站成一排,音乐老师要请其中的(N-K)位 ...
- NOIP1998-2018 CSP-S2 2019 2021提高组解题报告与视频
CSP-S 2020 讲题录屏 CSP-S 2020 讲题录屏_哔哩哔哩_bilibili 冠军说题--ACM世界冠军吴卓杰,带你复盘2020 CSP-S2 冠军说题--ACM世界冠军吴卓杰,带你复盘 ...
- NOIP大纲整理:(零)历年2000-2016NOIP提高组题目分析
年份 题目名称 考查内容 难度 2000-2016年NOIP提高组复赛题目 2000-A 进制转换 初等代数,找规律 ★ 2000-B 乘积最大 资源分配DP ★★★ 2000-C 单词接龙 DF ...
- 问题 C: 合唱队形
题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1, 2, -, K,他们的 ...
- P1066 2^k进制数 NOIP 2006 提高组 第四题
洛谷蓝题(点击跳转) 提高组 第四题 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的 ...
最新文章
- 移动互联网时代之用户名和密码何去何从(1)
- php static 和 global,php中global static和$GLOBALS使用与区别
- Union定义变量进行外部调用的方法
- 自定义异常最佳实践_播放,自定义和组织媒体的最佳文章
- 解决hive交互模式退格键乱码
- subroutines of perl
- html 居中 center,html – 如何居中的元素 – 使用什么而不是align:center属性?
- discuz核心类库class_core的函数注释
- 浅析ISO三体系标准认证对企业的作用
- 2014全国计算机二级visual foxpro,全国计算机等级考试二级visual_foxpro试题
- 科大讯飞语音转写以及语音合成配置+遇到问题处理
- 计算机教学楼起名,给教学楼起名字(富有诗意教学楼名字)
- 小皮面板安装以及pikachu环境搭建
- MSI (Message Signaled Interrupts)
- 研究生查分方式-查分时间大汇总-文都管联院
- 电脑键盘错乱完美解决
- Linux下的压测工具 hey
- 苏宁易购接口api电商数据获取
- 获取股票实时交易数据的方法
- UVA 11549 模拟 Floyed判圈法的应用 Calculator Conundrum
热门文章
- 计算机操作系统32位,电脑操作系统中32位和64位的区别
- android 删除图片后通知系统图库删除图片
- 强化理解指针、指针数组和数组指针(从三味书屋到成华大道)
- Servlet、ServletConfig、ServletContext
- centos7.4源码安装nginx-1.16.1 及NGINX最全配置 缓存缩略图4层转发
- 树莓派入门:树莓派的初始设置
- ps.execute()不能当作执行结果反馈,需要用getResultSet或getUpdateCount
- 宝塔面板无法连接FTP空间解决方法(超详细)
- 何时需要对时间序列进行Log Transformation
- Semantic Parsing on Freebase from Question-Answer Pairs【论文笔记】