QOJ.ac

QOJ

時間限制: 1 s 記憶體限制: 2048 MB 總分: 100

#14572. Mex Hex

统计

一只普通的(非魔法)短尾猫。照片来自 Becker1999

你家乡城市的安宁正被附近一只魔法短尾猫响亮的呼噜声和夜间潜行所打破。市长派你去把它吓跑——毕竟,你是这座城市的“附带、人身及其他灾难性损害守护者”。你接受了这一挑战,并准备吓走这只高贵的动物。

为了防范你,这只魔法短尾猫(正如其名)试图用非常规的方式伤害你。当它发动攻击时,它会施放若干个魔法。每个魔法施放时都具有特定的强度(potential),可以用一个自然数(在本题中,自然数定义为 $\mathbb{N} = \{0, 1, 2, \dots\}$)来表示。如果你被强度为 $p_1, p_2, \dots, p_n$ 的魔法击中,那么你从中感受到的痛苦将是 $\operatorname{mex}(\{p_1, p_2, \dots, p_n\})$,其中 $\operatorname{mex}$ 表示最小排除值(即对于集合 $S \subseteq \mathbb{N}$ 且 $S \neq \mathbb{N}$,$\operatorname{mex}(S)$ 是不在 $S$ 中的最小自然数 $m \in \mathbb{N}$)。请注意,这些魔法不会立即对你造成伤害。只有在所有魔法都施放完毕后,你才会根据被击中魔法强度的 $\operatorname{mex}$ 感受到痛苦。

为了保护自己,你带来了一面盾牌,它同样可以通过魔法来抵挡这些法术。你的护盾具有激活持续时间 $d$,这意味着当你激活护盾时,接下来的 $d$ 个法术将无法击中你。之后,护盾必须恢复其魔力,在接下来的 $d$ 个法术期间无法被激活。除此之外,你可以根据需要多次激活护盾。为了确保你能给这只魔法短尾猫一个下马威,市长要求你悄悄接近它。由于短尾猫会发现你激活的魔法护盾的光芒,因此你最早只能在站在这个罪魁祸首面前、就在它施放第一个法术之前激活护盾。

图 M.1:样例 3 的图解。方框中的数字表示法术的强度。在这个例子中,你的护盾持续时间为 $d = 2$。通过在第 5、9 和 14 个法术之前激活护盾,你阻挡了用绿色下划线标出的法术。你无法在用红色虚线下划线标出的法术期间激活护盾,因为此时护盾正在恢复魔力。

你现在必须制定一个策略,以承受尽可能少的痛苦。通过研究以往与魔法短尾猫的遭遇,你已经知道了即将对你施放的法术的强度。如果你以最优方式激活护盾,你所能承受的最小痛苦是多少?

输入格式

输入包含:

  • 第一行包含两个整数 $n$ 和 $d$($1 \le n \le 10^5$,$1 \le d \le n$),分别表示法术的数量和护盾的激活持续时间。
  • 第二行包含 $n$ 个整数 $p_1, \dots, p_n$($0 \le p_i < n$),表示这 $n$ 个法术的强度。

输出格式

输出一个整数,表示你从这些法术中能承受的最小痛苦。

样例

输入样例 1

5 1
0 1 0 1 0

输出样例 1

0

说明 1

你可以在第一个法术时激活护盾,让它在第二个法术时恢复魔力,在第三个法术时再次激活,在第四个法术时恢复,并在第五个法术时再次激活。这意味着只有两个强度为 $1$ 的法术击中了你。由于 $\operatorname{mex}(\{1, 1\}) = 0$,你承受的痛苦为 $0$。

输入样例 2

5 2
0 1 0 1 0

输出样例 2

2

说明 2

无论你如何激活护盾,在它恢复魔力期间,一个强度为 $0$ 的法术和一个强度为 $1$ 的法术都会击中你。因此,击中你的法术的 $\operatorname{mex}$ 至少为 $2$。这种痛苦程度也可以通过完全不使用护盾来达到。

输入样例 3

14 2
8 1 1 0 0 2 0 1 2 1 0 6 4 2

输出样例 3

2

说明 3

按照图 M.1 所示使用护盾。那么击中你的法术强度分别为 $8, 1, 1, 0, 0, 1, 0, 6$ 和 $4$。这些强度的 $\operatorname{mex}$ 为 $2$。可以证明,无法通过激活护盾使得剩余法术强度的 $\operatorname{mex}$ 为 $0$ 或 $1$。

输入样例 4

4 2
0 1 2 0

输出样例 4

1

说明 4

请记住,你最早只能在第一个法术之前激活护盾。因此,你无法同时阻挡两个强度为 $0$ 的法术。相反,通过阻挡第二个和第三个法术,所有击中你的法术强度都为 $0$。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.