#P15070. [UOI 2024 II Stage] Sequence

    ID: 15102 远端评测题 1500ms 512MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>动态规划 DP线段树2024UOI(乌克兰)

[UOI 2024 II Stage] Sequence

说明

Anton 感到压力山大——他必须提交所有作业。但正如常有的情况——他无法延长期限……

给定一个包含 nn 个整数的序列 aa,以及两个整数 llrr。你需要找到序列 aa 的最长子序列 bb,使得对于所有 1i<b1 \le i < |b|,满足 lbi+bi+1rl \le b_i + b_{i+1} \le r。这里 b|b| 表示序列 bb 的元素个数。换句话说,你需要选择一个子序列,使得任意相邻两个数的和既不小于 ll,也不大于 rr

一个数组的子序列是指通过从原序列中删除若干(可以是零个)元素得到的序列。

输入格式

  • 第一行包含三个整数 nnllrr1n51051 \le n \le 5 \cdot 10^51lr10171 \le l \le r \le 10^{17})。
  • 第二行包含 nn 个整数 aia_i1air1 \le a_i \le r)——序列的描述。

输出格式

输出一个整数——这样的子序列 bb 的最大长度。

5 2 6
1 3 4 2 5
3
2 1 1
1 1
1

提示

在第一个示例中,你可以选择子序列 [1,3,2][1, 3, 2]21+362 \leq 1 + 3 \leq 623+262 \leq 3 + 2 \leq 6

你也可以选择 [1,4,2][1, 4, 2]

评分细则

  • 11 分):所有 aia_i 都相同;
  • 33 分):对所有 1in21 \le i \le n-2ai=ai+2a_i = a_{i+2}
  • 99 分):n20n \le 20
  • 88 分):n5000n \le 5000
  • 99 分):rl10r - l \le 10
  • 1010 分):l=1l = 1r106r \le 10^6
  • 1313 分):r106r \le 10^6
  • 1010 分):l=1l = 1
  • 2424 分):n105n \le 10^5
  • 1313 分):无额外限制。

翻译由 DeepSeek V3 完成