ARC122C
Sol
第一眼想到二进制,但是发现并不好实现。
继续观察题目:如果交替操作 3
和 4
,那么得到的数不难发现是斐波那契数列,同时斐波那契数列有个性质:每一项至多选一次就能凑出所有正整数。
那么有如上性质,我们考虑在相邻的 3
和 4
操作间插入 1
和 2
操作,注意到如果在某个位置加上 \(1\),我们可以容易求出这个位置的对 \(x\) 的最终贡献是斐波那契数列的哪一项。
例如:对于操作序列 343434
,把操作 2
插入到第 \(1\) 项,那么这个操作对答案的贡献是经计算是 \(8\),也就是斐波那契数列的第 \(6\) 项,所以它造成的贡献等价于后面 3
和 4
的操作数量对应的斐波那契数列的数字。
设 3
和 4
的总个数为 \(len\),且形如 343434...34
所以假如我们要加入斐波那契数列的第 \(i\) 项:
- 如果 \(i\) 是奇数,那么在第 \(len-i\) 前插入 \(1\)。
- 如果 \(i\) 是偶数,那么在第 \(len-i\) 前插入 \(2\)。
手摸不难发现这是正确的。
Code
Link。