ARC122C

Sol

第一眼想到二进制,但是发现并不好实现。

继续观察题目:如果交替操作 34,那么得到的数不难发现是斐波那契数列,同时斐波那契数列有个性质:每一项至多选一次就能凑出所有正整数。

那么有如上性质,我们考虑在相邻的 34 操作间插入 12 操作,注意到如果在某个位置加上 \(1\),我们可以容易求出这个位置的对 \(x\) 的最终贡献是斐波那契数列的哪一项。

例如:对于操作序列 343434,把操作 2 插入到第 \(1\) 项,那么这个操作对答案的贡献是经计算是 \(8\),也就是斐波那契数列的第 \(6\) 项,所以它造成的贡献等价于后面 34 的操作数量对应的斐波那契数列的数字。

34 的总个数为 \(len\),且形如 343434...34 所以假如我们要加入斐波那契数列的第 \(i\) 项:

  • 如果 \(i\) 是奇数,那么在第 \(len-i\) 前插入 \(1\)
  • 如果 \(i\) 是偶数,那么在第 \(len-i\) 前插入 \(2\)

手摸不难发现这是正确的。

Code

Link

posted @ 2025-03-17 11:12  incra  阅读(10)  评论(0)    收藏  举报