一文搞懂:九度OJ1500出操队形

简介: 一文搞懂:九度OJ1500出操队形

"

题目地址:

题目描述:

在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往楼下跑了,然后身高矮的排在队伍的前面,身高较高的就要排在队尾。突然,有一天出操负责人想了一个主意,想要变换一下队形,就是当大家都从楼上跑下来后,所有的学生都随机地占在一排,然后出操负责人从队伍中抽取出一部分学生,使得队伍中剩余的学生的身高从前往后看,是一个先升高后下降的“山峰”形状。据说这样的形状能够给大家带来好运,祝愿大家在学习的道路上勇攀高峰。(注,山峰只有一边也符合条件,如1,1、2,2、1均符合条件)

输入: //代码效果参考:https://v.youku.com/v_show/id_XNjQwMDQxMTQ2MA==.html

输入可能包含多个测试样例。

对于每个测试案例,输入的第一行是一个整数n(1<=n<=1000000):代表将要输入的学生个数。

输入的第二行包括n个整数:代表学生的身高(cm)(身高为不高于200的正整数)。

输出:

对应每个测试案例,输出需要抽出的最少学生人数。

样例输入:

6

100 154 167 159 132 105

5

152 152 152 152 152

样例输出:

0

4

来源: 微策略2013年校园招聘面试一面试题

#include

#define MAX 1000001

int student【MAX】;

int cnt【MAX】;//cnt【i】表示以i为“峰顶”的最长子序列

int dp【MAX】;

int BSearch(int dp【】, int start, int end, int key){//搜索大于等于key的第一个元素的位置

int middle;

while (start <= end){

middle = ((end - start) ] 1) + start;

if (dp【middle】 key)

end = middle - 1;

else

return middle;

}

return start;

}

int Insert(int data, int *nMax){//找到以data为结尾的上升子序列的长度,并返回

int j = BSearch(dp, 0, *nMax, data);

if (j > *nMax){

*nMax = j;

dp【j】 = data;

}

else if (dp【j-1】 < data && data < dp【j】){

dp【j】 = data;

}

return j;

}

void LIS(int n){//求以student【i】//代码效果参考:https://v.youku.com/v_show/id_XNjQwMDQwMzk2OA==.html

为结尾的上升子序列的长度

int i;

int nMaxLIS = 1;

dp【0】 = -1;

dp【1】 = student【1】;

cnt【1】 = 1;

for (i = 2; i = 1; --i){

cnt【i】 += Insert(student【i】, &nMaxLDS) - 1;

}

}

int main(void){

int n, i;

int max;

while (scanf(""%d"", &n) != EOF){

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

scanf(""%d"", &student【i】);

LIS(n);

LDS(n);

max = -1;

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

if (max < cnt【i】)

max = cnt【i】;

printf(""%d\n"", n - max);

}

return 0;

}

九度OJ上相似的题目:


"
image.png
相关文章
|
7月前
|
机器学习/深度学习 算法
面试题 08.12:八皇后
面试题 08.12:八皇后
58 0
|
算法
【AcWing算法基础课】第五章 动态规划(未完待续)(3)
当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。
110 0
|
2月前
|
算法
计科一二班算法数据结构实验9答案
计科一二班算法数据结构实验9答案
16 0
|
7月前
|
存储 网络协议 测试技术
复习软考之精读真题题解,猜猜这是哪年的真题吧
复习软考之精读真题题解,猜猜这是哪年的真题吧
34 0
|
7月前
|
C语言 索引
【PTA刷题】串右整理(代码+详解)
【PTA刷题】串右整理(代码+详解)
80 0
|
算法
【AcWing算法基础课】第五章 动态规划(未完待续)(1)
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且 总价值最大 。
64 0
【AcWing算法基础课】第五章 动态规划(未完待续)(1)
|
人工智能 算法 JavaScript
【AcWing算法基础课】第五章 动态规划(未完待续)(2)
给定一个如下图所示的数字三角形,从 顶部 出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点, 一直走到底层 ,要求找出一条路径,使 路径上的数字的和最大。
68 0
ACM刷题之路(十五) 分治法 + 找规律 ZOJ4085
ACM刷题之路(十五) 分治法 + 找规律 ZOJ4085
109 0
测量学的几道简答题
测量学的几道简答题
67 0