博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
合唱队形(DP)
阅读量:6941 次
发布时间:2019-06-27

本文共 1166 字,大约阅读时间需要 3 分钟。

【题目】

N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。
合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,
他们的身高分别为T1,T2,…,TK,则他们的身高满足  T1 < T2  ...<  Ti  >  Ti+1  >  …  >TK(1<=i<=K)。
你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。
【输入格式】
第一行是一个整数N(2<=N<=100),表示同学的总数。
下来n个整数,用空格分隔,第i个整数Ti(130<=Ti<=230)是第i位同学的身高(厘米)。
【输出格式】
包括一行,这一行只包含一个整数,就是最少需要几位同学出列。
【样例输入】
8
186 186 150 200 160 130 197 220
【样例输出】
4

思路:

  正着求一遍最长上升子序列和反着求一遍最长上升子序列即可。

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #include
13 #include
14 #define ll long long int15 #define INF 0x7fffffff16 #define mod 100000000717 #define me(a,b) memset(a,b,sizeof(a))18 #define PI acos(-1.0)19 #define mian main20 //size_t npos=-1;21 //ios::sync_with_stdio(0),cin.tie(0);22 using namespace std;23 const int N=1e5+5;24 25 int main()26 {27 int n,a[105],dp1[105],dp2[105];28 cin>>n;29 for(int i=0;i
>a[i];31 for(int i=0;i
=0;i--){39 dp2[i]=1;40 for(int j=n-1;j>i;j--){41 if(a[j]

 

转载于:https://www.cnblogs.com/DarkFireMater/p/9026205.html

你可能感兴趣的文章
学习笔记十三 : dhcp
查看>>
逆转单向链表
查看>>
system
查看>>
Linux(CentOS)下的apache服务器配置与管理
查看>>
Skype for Business Server 2015-04-前端服务器-3-安装-管理工具
查看>>
关于mysql 删除数据后物理空间未释放(转载)
查看>>
CentOS6中httpd-2.2配置(1)
查看>>
Cisco ASA防火墙原地址与目的地址NAT
查看>>
Windows Server 2008 R2修改远程桌面连接数 .
查看>>
基于window.onerror事件 建立前端错误日志
查看>>
WP8开发日志(4):ResourceDictionary的外联
查看>>
[笔记]shell中算术扩展基础
查看>>
python 之中文全攻略
查看>>
MDT2012部署问题,Litetouch.wfs和Litetouch.vbs的区别
查看>>
__init__.py 作用详解
查看>>
puppet安装使用教程(四)--puppet的工作原理及工作过程
查看>>
mysql查询今天、昨天、上周
查看>>
【Composer】实战操作二:自己创建composer包并提交
查看>>
linux 安装
查看>>
基于Redis的作业执行设计总结
查看>>