#jlineup. 2026暑假CSP-J模拟赛05-T4 程老师的身高队列
2026暑假CSP-J模拟赛05-T4 程老师的身高队列
【文件读写】本题使用文件读写:输入文件
lineup.in,输出文件lineup.out。
时间限制:1000ms 内存限制:512MB
题目描述
程老师最近接到一个任务:学校要举办一场展示活动,需要从他班上挑一批学生组成亮相队伍。班里一共有 个学生,这些学生按照当初报名的先后顺序排成了一列——报名最早的学生站在第 1 位,报名最晚的站在第 位。每个学生都有一个身高,第 个报名的学生身高为 。
展示之前,每个学生都可以选择要不要踮脚。踮脚之后,这名学生的身高会临时增加一个固定的数值 ,这个数值对班里的每一个学生都相同;没有踮脚的学生,身高保持原样。每个学生最多只能踮一次脚,踮了脚之后不能反悔。一个学生踮不踮脚,跟其他学生没有关系。我们把一名学生展示时的实际身高叫做他的有效身高:没有踮脚的学生,有效身高就是 ;踮了脚的学生,有效身高就是 。每个学生的有效身高只有这两种可能,没有第三种。
程老师要从这 个学生里挑出一部分人来亮相。被选中的学生必须保持他们在报名队伍中的先后顺序:如果学生 报名比学生 早,而两个人都入选了,那么 在亮相队伍里仍然站在 的前面。程老师不能把后面报名的学生挪到前面来,也不能打乱任何人的相对位置。被选中的学生之间可以有间隔,程老师可以跳过中间某些学生不选。亮相队伍的人数不设上限,只要满足下面的要求,能选多少就选多少。
亮相队伍还有一个视觉要求:从前到后,相邻两个学生的有效身高必须不下降。也就是说,排在后面的学生,其有效身高必须大于或者等于排在他前面的那个学生的有效身高;两个有效身高相同的学生相邻站是允许的。程老师决定哪些学生入选、每个入选的学生踮不踮脚,这两个决定是一起做出的——他只会为最终入选的学生安排踮脚,没有入选的学生踮不踮脚,不影响亮相队伍的构成。
程老师想知道,在满足上述所有条件的前提下,最多能挑出多少个学生组成亮相队伍。请你帮他算出来。
输入格式
从文件 lineup.in 中读入数据。
第一行两个整数 和 ,分别表示学生人数和踮脚增加的身高。
第二行 个整数 ,依次表示第 1 个到第 个报名学生的身高。
输出格式
输出到文件 lineup.out 中。
一行一个整数,表示最多能挑出的学生人数。
数据范围
对于所有测试点,保证:
- 。
- 。
- 。
各测试点的详细限制如下:
| 测试点 | 特殊性质 | |
|---|---|---|
| 1~2 | 10 | 无 |
| 3~5 | 20 | |
| 6~8 | 2000 | A |
| 9~13 | 300 | 无 |
| 14~20 | 2000 |
特殊性质 A:。
样例
样例 1 输入
4 5
8 2 1 3
样例 1 输出
3
样例 2 输入
5 3
9 1 4 2 5
样例 2 输出
4
样例解释
对于样例 2,第 4 位学生身高为 2,踮脚后有效身高变成 。依次选第 2、3、4、5 位学生,有效身高分别为 1、4、5、5,不下降,可以选出 4 人。第 1 位学生身高为 9,若把他选进队伍,他之后任何学生的有效身高都达不到 9,这支队伍就只剩他 1 人。
- ID
- 702
- 类型
- 传统题
- Time Limit
- 1000ms
- Memory Limit
- 512MiB
- 上传者
相关
在下列比赛中: