1 条题解
-
0
题解
思路
固定 。由递推式与杨辉三角可知,它对 的贡献次数为
只关心次数的奇偶性。由 Lucas 定理,上式为奇数当且仅当
令 为不小于 的最小二次幂,。把未知数组放到长度为 的数组 中,令 ,其余位置暂置零。再令
则完整的 正是 的子集 Zeta 变换。异或意义下,Zeta 变换做两次就是恒等变换,因此若完整 已知,只需再做一次相同变换即可恢复 。
困难在于只知道 的 个位置。设 是已知部分按补集下标排列后做一次 Zeta 变换的结果。先把对应未知 的约束位置在 中清零,再做一次 Zeta 变换,就能补出全部未知的 。最后对完整 做第三次 Zeta 变换,取出 。
这个过程同时证明线性变换可逆,所以输入总有唯一解。
做法
子任务一
对每个二进制位独立枚举 的 种零一取值,按 Lucas 条件检查全部 ,找到唯一可行掩码。把三十个二进制位合并为答案。
子任务二
当 是二次幂时 ,完整的 没有未知位置。将给定序列按补集下标放置后,直接做一次异或 Zeta 变换即可恢复 。
子任务三
把每个 看成一个同时携带三十个二进制位的 GF(2) 未知量。用 Lucas 条件建立 系数矩阵,使用位集加速高斯消元;行异或时右端整数也整体异或,一次即可处理三十位。
满分做法
- 取 为不小于 的最小二次幂,把给定值写入 。
- 将已知部分按补集下标放入辅助数组,对辅助数组做一次子集 Zeta 变换。
- 把与未知 位置对应的约束清零,再做一次 Zeta 变换并补齐 。
- 对完整 做一次 Zeta 变换,输出 。
复杂度
子任务一的时间复杂度为 ,空间复杂度为 。
子任务二和满分做法的时间复杂度为 ,空间复杂度为 。
子任务三的时间复杂度为 ,空间复杂度为 。
- 1
信息
- ID
- 1328
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者