#jlineup. 2026暑假CSP-J模拟赛05-T4 程老师的身高队列

2026暑假CSP-J模拟赛05-T4 程老师的身高队列

【文件读写】本题使用文件读写:输入文件 lineup.in,输出文件 lineup.out

时间限制:1000ms 内存限制:512MB

题目描述

程老师最近接到一个任务:学校要举办一场展示活动,需要从他班上挑一批学生组成亮相队伍。班里一共有 nn 个学生,这些学生按照当初报名的先后顺序排成了一列——报名最早的学生站在第 1 位,报名最晚的站在第 nn 位。每个学生都有一个身高,第 ii 个报名的学生身高为 aia_i

展示之前,每个学生都可以选择要不要踮脚。踮脚之后,这名学生的身高会临时增加一个固定的数值 tt,这个数值对班里的每一个学生都相同;没有踮脚的学生,身高保持原样。每个学生最多只能踮一次脚,踮了脚之后不能反悔。一个学生踮不踮脚,跟其他学生没有关系。我们把一名学生展示时的实际身高叫做他的有效身高:没有踮脚的学生,有效身高就是 aia_i;踮了脚的学生,有效身高就是 ai+ta_i + t。每个学生的有效身高只有这两种可能,没有第三种。

程老师要从这 nn 个学生里挑出一部分人来亮相。被选中的学生必须保持他们在报名队伍中的先后顺序:如果学生 xx 报名比学生 yy 早,而两个人都入选了,那么 xx 在亮相队伍里仍然站在 yy 的前面。程老师不能把后面报名的学生挪到前面来,也不能打乱任何人的相对位置。被选中的学生之间可以有间隔,程老师可以跳过中间某些学生不选。亮相队伍的人数不设上限,只要满足下面的要求,能选多少就选多少。

亮相队伍还有一个视觉要求:从前到后,相邻两个学生的有效身高必须不下降。也就是说,排在后面的学生,其有效身高必须大于或者等于排在他前面的那个学生的有效身高;两个有效身高相同的学生相邻站是允许的。程老师决定哪些学生入选、每个入选的学生踮不踮脚,这两个决定是一起做出的——他只会为最终入选的学生安排踮脚,没有入选的学生踮不踮脚,不影响亮相队伍的构成。

程老师想知道,在满足上述所有条件的前提下,最多能挑出多少个学生组成亮相队伍。请你帮他算出来。

输入格式

从文件 lineup.in 中读入数据。

第一行两个整数 nntt,分别表示学生人数和踮脚增加的身高。

第二行 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n,依次表示第 1 个到第 nn 个报名学生的身高。

输出格式

输出到文件 lineup.out 中。

一行一个整数,表示最多能挑出的学生人数。

数据范围

对于所有测试点,保证:

  • 1n20001 \le n \le 2000
  • 0t1090 \le t \le 10^9
  • 1ai1091 \le a_i \le 10^9

各测试点的详细限制如下:

测试点 nn \le 特殊性质
1~2 10
3~5 20
6~8 2000 A
9~13 300
14~20 2000

特殊性质 A:t=0t = 0

样例

样例 1 输入

4 5
8 2 1 3

样例 1 输出

3

样例 2 输入

5 3
9 1 4 2 5

样例 2 输出

4

样例解释

对于样例 2,第 4 位学生身高为 2,踮脚后有效身高变成 2+3=52 + 3 = 5。依次选第 2、3、4、5 位学生,有效身高分别为 1、4、5、5,不下降,可以选出 4 人。第 1 位学生身高为 9,若把他选进队伍,他之后任何学生的有效身高都达不到 9,这支队伍就只剩他 1 人。

难度 提高
通过率 50%
尝试 4
已通过 2
ID
702
类型
传统题
Time Limit
1000ms
Memory Limit
512MiB
上传者

相关

在下列比赛中:

暑假CSP-J模拟赛 第5场