#P15070. [UOI 2024 II Stage] Sequence

    ID: 16999 远端评测题 1500ms 512MiB 尝试: 0 已通过: 0 显示难度普及+/提高− 上传者: 标签>动态规划 DP线段树2024UOI(乌克兰)

[UOI 2024 II Stage] Sequence

题目描述

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

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

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

输入格式

  • 第一行包含三个整数 nn、ll、rr(1≤n≤5⋅1051 \le n \le 5 \cdot 10^5,1≤l≤r≤10171 \le l \le r \le 10^{17})。
  • 第二行包含 nn 个整数 aia_i(1≤ai≤r1 \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]。2≤1+3≤62 \leq 1 + 3 \leq 6,2≤3+2≤62 \leq 3 + 2 \leq 6。

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

评分细则

  • (11 分):所有 aia_i 都相同;
  • (33 分):对所有 1≤i≤n−21 \le i \le n-2,ai=ai+2a_i = a_{i+2};
  • (99 分):n≤20n \le 20;
  • (88 分):n≤5000n \le 5000;
  • (99 分):r−l≤10r - l \le 10;
  • (1010 分):l=1l = 1,r≤106r \le 10^6;
  • (1313 分):r≤106r \le 10^6;
  • (1010 分):l=1l = 1;
  • (2424 分):n≤105n \le 10^5;
  • (1313 分):无额外限制。

翻译由 DeepSeek V3 完成