Vijos P1098合唱队形
合唱队形
Time Limit: 1000 ms Memory Limit: 65536 KB
Total Submit: 95 Accepted: 54
合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1, 2, …, K,他们的身高分别为T1, T2, …, TK,则他们的身高满足T1 < T2 < … < Ti , Ti > Ti+1 > … > TK (1 <= i <= K)。
你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。
186 186 150 200 160 130 197 220
using namespace std;
int dp[105], DPup[105], DPdown[105], num[105];
int main()
{
int n;
while (cin >> n)
{
for (int i = 0; i < n; i++)
{
cin >> num[i];
}
DPup[0] = DPdown[n - 1] = 1;
for (int i = 1; i < n; i++)
{
int maxup = 1;
for (int j = 0; j < i; j++)
{
if (num[i]>num[j])
{
maxup=maxup>DPup[j] + 1 ? maxup : DPup[j] + 1;
}
}
DPup[i] = maxup;
}
for (int i = n - 2; i >= 0; i--)
{
int maxdown = 1;
for (int j = n - 1; j > i; j--)
{
if (num[i] > num[j])
{
maxdown=maxdown > DPdown[j] + 1 ? maxdown : DPdown[j]+1;
}
}
DPdown[i] = maxdown;
}
int max = 1;
for (int i = 0; i < n; i++)
{
if (DPup[i] + DPdown[i] - 1>max)
{
max = DPup[i] + DPdown[i] - 1;
}
}
cout << n - max << endl;
}
return 0;
}
Vijos P1098合唱队形相关推荐
- Vijos P1098 合唱队形题解
程序思路就是 求一遍最长上升子序列长度和最长下降子序列长度. #include <iostream> using namespace std; int a[1001],f[1001],g ...
- 合唱队形(递增再递减的最长子序列)
题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1, 2, -, K,他们的 ...
- P1091 合唱队形[单调性+DP]
题目来源:洛谷 题目描述 N位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,-,K,他们的身高 ...
- P1091 合唱队形(LIS)
题目描述 NNN位同学站成一排,音乐老师要请其中的(N−KN-KN−K)位同学出列,使得剩下的KKK位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,-,K1,2, ...
- 洛谷P1091 合唱队形
洛谷P1091 合唱队形 题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,-,K他 ...
- UOJ #214 合唱队形 (概率期望计数、DP、Min-Max容斥)
UOJ #214 合唱队形 (概率期望计数.DP.Min-Max容斥) 9个月的心头大恨终于切掉了!!!! 非常好的一道题,不知为何uoj上被点了70个差评. 题目链接: http://uoj.ac/ ...
- tyvj 1067 合唱队形 dp LIS
P1067 合唱队形 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2004 提高组 第三道 描述 N位同学站成一排,音乐老师要请其中的(N-K)位 ...
- 洛谷1091合唱队形
题目描述 N位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,-,K,他们的身高分别为T1,T ...
- 【DP】合唱队形(jzoj 1122)
合唱队形 jzoj 1122 题目大意: 有n个人,按一定的顺序站成一排,最少减去多少个人可以使队列以一个人为中心,两边分别递减 输入样例 8 186 186 150 200 160 130 197 ...
最新文章
- Python 之 Pandas (四)处理丢失数据
- 在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式
- boost::owner_equal_to相关的测试程序
- 什么是 SAP UI5 的 Hybrid Web Containers
- 模拟UIWebView
- 表弟励志做程序员了,除了霸王我还能给他什么?
- lisp励遍图块中的实体_lisp励遍图块中的实体_「AutoCAD之图块编辑」八仙过海各显神通——图块编辑方法综述......
- 拓端tecdat|R语言估计获胜概率:模拟分析学生多项选择考试通过概率可视化
- android播放vp8透明,Androids 使用MediaCodec在TV端播放不了视频
- AD选择板边覆铜教程
- EtherCAT xml 解析(不定时更新)
- Flash Builder 4 正式版破解注册方法(flex4)
- 企业网络安全最常遇到的安全问题是什么,主要面临哪些威胁?
- Python 3.6 使用wordcloud制作词云(可设背景图像)
- 达梦数据库(DM)——命令方式开启达梦数据库本地归档的具体方法
- 大文件传输软件-镭速——MAC版分享
- 2013.6甲骨文公司的电话面试
- LSM tree(日志结构合并树)_笔记
- static 和 extern水火不容。
- 以web形式实现模拟炸金花游戏