#P15278. [MCO 2025] Subsequence

    ID: 15296 远端评测题 2000ms 256MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>动态规划 DP线段树2025MCC/MCO(马来西亚)

[MCO 2025] Subsequence

说明

给定一个数组 aa 和一个整数 XX,你的任务是找出数组 aa 中最长的 有效 子序列。一个子序列是 有效 的,当且仅当该子序列中任意相邻元素的乘积都不超过 XX。也就是说,设 bbaa 的一个长度为 mm 的子序列,则 bb有效 的,当且仅当对于任意 ii1im11 \leq i \leq m-1),都有 bibi+1Xb_i \cdot b_{i+1} \leq X

注意:数组 bb 是另一个数组 aa 的子序列,当且仅当 bb 可以通过从数组 aa 中移除若干元素(也可以不移除)且不改变剩余元素的顺序得到。例如,数组 [1,3][1,3][1,2,3][1,2,3] 的一个子序列,而数组 [2,1][2,1] 和数组 [1,4][1,4] 不是 [1,2,3][1,2,3] 的子序列。

输入格式

第一行包含两个以空格分隔的整数 nn1n1051 \leq n \leq 10^5)和 XX0X10180 \leq |X| \leq 10^{18})—— nn 是数组 aa 的长度,XX 是给定的整数。

第二行包含 nn 个以空格分隔的整数 a1,a2,,ana_1, a_2, \dots, a_n1ai1091 \leq |a_i| \leq 10^9)。

输出格式

输出一行一个整数,表示最长 有效 子序列的长度。

1 10
100
1
5 10
3 4 2 5 1
4
5 10
6 -2 -2 -6 5
4

提示

注释

示例 1
只有一个元素的子序列总是有效的,因为不存在相邻元素。因此,最长有效子序列的长度为 11

示例 2
本例中有一个有效子序列 [3,2,5,1][3,2,5,1]。其相邻元素的乘积均不超过 1010,如下所示:

  • 3×2=6(10)3 \times 2 = 6 \,(\leq 10)
  • 2×5=10(10)2 \times 5 = 10 \,(\leq 10)
  • 5×1=5(5)5 \times 1 = 5 \,(\leq 5)

子序列 [3,4,2,5,1][\underline{3,4},2,5,1](即原数组 aa)是 无效 的,因为第一个和第二个元素的乘积为 1212,超过了 1010

因此,最长有效子序列的长度为 44

示例 3
本例中最长有效子序列是 [6,2,2,5][6,-2,-2,5]

子序列 [6,2,2,6,5][6,-2,\underline{-2, -6}, 5](即原数组 aa)是 无效 的,因为第三个和第四个元素的乘积为 2×6=12-2 \times -6 = 12,超过了 1010

计分

子任务 155 分): X=1018X = 10^{18}

子任务 21515 分): n20n \leq 20

子任务 32020 分): n103n \leq 10^3

子任务 41010 分): X0X \geq 0,且对于所有 1in1 \leq i \leq n,有 1ai2001 \leq a_i \leq 200

子任务 52020 分): X0X \geq 0,且对于所有 1in1 \leq i \leq n,有 1ai1051 \leq a_i \leq 10^5

子任务 61010 分): X0X \geq 0,且对于所有 1in1 \leq i \leq n,有 ai1a_i \geq 1

子任务 72020 分): 无额外限制

翻译由 DeepSeek 完成