信息
- ID
- 1673
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者
令 X 表示当前格子序列,并定义边界序列 Yi=Xi⊕Xi+1。
初始的 Y 全为 1;一次操作恰好选择形如 1,0,…,0,1 的一段,把两端的 1 变成 0。第一个格子的值始终为 1,所以若 A1=0,答案为零。否则目标边界序列为 Bi=Ai⊕Ai+1。
考察 B 中每一段连续的零。若某段长度 x 为奇数,它不可能由成对消去的边界得到。若 x=2m,完成该段需要 m 次操作,段内操作顺序共有 (2m−1)!! 种。不同零段彼此独立,但它们的操作可以任意交错;若各段对应 m1,m2,…,mk,交错数为 (∑mi)!/∏mi!。
因此答案为
(∑mi)!i∏mi!(2mi−1)!!.预处理阶乘、逆阶乘和奇数双阶乘后线性扫描即可,总复杂度为 O(N),空间复杂度为 O(N)。