CF1190A Tokitsukaze and Discard Items

题目描述

最近,Tokitsukaze 发现了一个有趣的游戏。游戏开始时,Tokitsukaze 拥有 $n$ 个物品。然而,她觉得物品太多了,所以现在她想要从中丢弃 $m$ 个特殊物品($1 \le m \le n$)。 这 $n$ 个物品按照编号 $1$ 到 $n$ 标记。最初,编号为 $i$ 的物品位于第 $i$ 个位置。物品被有序地分成若干页,每一页恰好包含 $k$ 个位置,最后一页的部分位置可能为空。 Tokitsukaze 会进行如下操作:关注第一个包含至少一个特殊物品的特殊页,每次操作时,Tokitsukaze 会丢弃该页上所有的特殊物品。当某个物品被丢弃或移动后,其原来的位置会变为空,然后其下方的物品(如果存在)会向上移动到这个空位。这个移动过程可能会导致许多物品前移,甚至进入前一页,因此 Tokitsukaze 会一直等待,直到所有物品都停止移动,然后重复上述操作(即检查特殊页并丢弃特殊物品),直到没有需要丢弃的物品为止。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1190A/a059bb92f5a4888ea9bb5a2b1a83486b43dcecf3.png) 以题目中的第一个例子为例:$n=10$,$m=4$,$k=5$,$p=[3, 5, 7, 10]$。共有两页。最初,第一页是特殊页(因为它是第一个包含特殊物品的页)。因此 Tokitsukaze 丢弃编号为 $3$ 和 $5$ 的特殊物品。之后,第一页仍然是特殊页。此时第一页包含 $[1, 2, 4, 6, 7]$,Tokitsukaze 丢弃编号为 $7$ 的特殊物品。之后,第二页成为特殊页(因为它是第一个包含特殊物品的页)。此时第二页包含 $[9, 10]$,Tokitsukaze 丢弃编号为 $10$ 的特殊物品。Tokitsukaze 想知道她总共会进行多少次操作。

输入格式

第一行包含三个整数 $n$、$m$ 和 $k$($1 \le n \le 10^{18}$,$1 \le m \le 10^5$,$1 \le m, k \le n$),分别表示物品总数、需要丢弃的特殊物品数量以及每页的位置数。 第二行包含 $m$ 个互不相同的整数 $p_1, p_2, \ldots, p_m$($1 \le p_1 < p_2 < \ldots < p_m \le n$),表示需要丢弃的特殊物品的编号。

输出格式

输出一个整数,表示 Tokitsukaze 总共需要进行的操作次数。

说明/提示

对于第一个样例: - 第一次操作时,Tokitsukaze 关注第一页 $[1, 2, 3, 4, 5]$,丢弃编号为 $3$ 和 $5$ 的物品; - 第二次操作时,Tokitsukaze 关注第一页 $[1, 2, 4, 6, 7]$,丢弃编号为 $7$ 的物品; - 第三次操作时,Tokitsukaze 关注第二页 $[9, 10]$,丢弃编号为 $10$ 的物品。 对于第二个样例,Tokitsukaze 会关注第二页 $[6, 7, 8, 9, 10]$,并一次性丢弃所有特殊物品。 由 ChatGPT 4.1 翻译