讲解
先讲暴力
首先这题第一眼暴力,枚举每一次应该拿走的苹果,每次删除这个苹果。
如果拿到了最后一个苹果,记录一下即可。由于删除次数过于多,可以考虑链表。
时间肯定爆炸,期望得分 60pts60pts60pts。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
先不考虑编号为 nnn 的苹果是多久拿的。
设苹果的数量是 888,拿走苹果的情况如下:
拿走的情况可以看作周期问题,可以分成三个三个周期来取走每一个周期的第一个苹果。如下图:
所以每次拿走苹果的个数是 ⌈n3⌉\lceil \frac{n}{3} \rceil⌈3n ⌉,其中 nnn 是当前苹果的数量。
然后考虑编号为 nnn 的苹果是多久拿的。
这里给出一个特殊的例子(后面就知道为什么特殊了),苹果数量是 777:
分组情况是这样的:
可以看到这时后面编号为 777 的苹果被“孤立”了,这是因为最后一组只有 nnn 编号的那一个苹果了,也说明了当 nnn 除以 333 的余数是 111 时,最后一个苹果会被取走。nnn 表示这个时候苹果的数量。
按照结论模拟即可,期望得分 100pts100pts100pts。
需要注意的是:今年的 CSP 的题在 ACGO 上交都要加上 freopen 和 fclose。
赛时代码: