P17756 「RSOI-3E」集合构造 / set

题目背景

题目来源:【HT-126-Div.2】核桃 CSP-S 组模拟赛

题目描述

给定一个长度为 $n$ 的正整数序列 $A = \{A_1, A_2, \dots, A_n\}$,以及非负整数 $k$ 和正整数 $d$。 你可以构造一个正整数多重集合 $B$,要求满足 $|B| \le k$(即集合 $B$ 中最多包含 $k$ 个元素,且元素可以任意指定)。 令集合 $S = A \cup B$。你需要从 $S$ 中选出一个子集 $T \subseteq S$,使得 $T$ 中的元素在按严格递增顺序排列后 $t_1 < t_2 < \dots < t_m$,能够满足: - 对于任意 $1 \le i < m$,均有 $t_{i+1} - t_i \le d$。 求 $|T|$ 的最大值(即 $m$ 的最大值)。

输入格式

输入共两行。 第一行,三个整数 $n, k, d$。 第二行,包含 $n$ 个正整数表示序列 $A_i$。

输出格式

输出共一行,一个整数表示 $|T|$ 的最大值。

说明/提示

**【样例解释 #1】** 对于样例 #1,原序列 $A$ 去重并排序后为 $\{1, 4, 8, 9, 13\}$。 我们可以选择 $A$ 中的子集 $\{4, 8, 9\}$,并构造集合 $B = \{6\}$(只使用了 $1$ 个元素,满足 $|B| \le 1$)。 此时 $T = \{4, 6, 8, 9\}$,排序后相邻两项的差值分别为 $2, 2, 1$,均不超过 $d=2$。集合 $T$ 的大小为 $4$。 **【样例解释 #2】** 对于样例 #2,原序列 $A$ 去重排序后为 $\{2, 4, 5, 10, 11, 15, 16, 20\}$。 选取 $A$ 中的 $\{2, 4, 5, 10, 11, 15, 16\}$,并令 $B = \{8, 14\}$。 此时 $T = \{2, 4, 5, 8, 10, 11, 14, 15, 16\}$,相邻差值最大为 $3$,大小为 $9$。 **【数据范围】** **本题采用捆绑测试。** 对于所有测试数据,保证: $1 \le n \le 10^5$,$0 \le k \le 10^9$,$1 \le d, A_i \le 10^9$。 |子任务编号 |$n\le$ |特殊性质 |分值 | |:-------:|:--------:|:-----:|:--:| |1|$10^2$ |$k=0$ |$15$| |2|$10^3$|无 |$15$| |3|$10^5$|$k=0$ |$20$| |4|$10^5$|$d=1$ |$20$| |5|$10^5$|无 |$30$|