1 条题解
-
0
题解
思路
令长度为 的核函数
一次能量变化正是异或卷积:。因此
Walsh-Hadamard 变换 把异或卷积变为逐点乘法,而且 。若模数 为奇素数,可以乘 完成逆变换;但本题的 可以是任意合数,甚至是二的幂,逆元可能不存在。
关键处理是把全部变换放在模数 下进行。第二次 Hadamard 变换后的每个真实整数都含因子 。模 的剩余类也仍能整除 ,整除后恰好保留模 的答案。因此无需任何逆元。
做法
子任务 1
按题意重复 次,每次枚举 直接计算下一时刻。时间复杂度为 。
子任务 2
在异或卷积环中对核 做二进制快速幂:卷积单位元仅在下标 处为 。每次卷积直接枚举两个下标,最后再与 卷积。时间复杂度为 。
满分算法
取扩大模数 :
- 构造 ;
- 分别对 与 做 Hadamard 变换;
- 对每个频率点,把 乘上 ;
- 再做一次 Hadamard 变换;
- 每项先除以 ,再对 取模。
由于 只依赖下标的置位数,它的变换值也只依赖频率下标的置位数,因此只需计算 次快速幂。独立实现还可用 Krawtchouk 多项式
直接计算置位数为 的特征值,以交叉核验 FWT 构造。
所有模乘使用 128 位中间值,因为 最大约为 。
正确性证明
核 与题目转移系数完全相同,所以一次转移等价于异或卷积。卷积的结合律推出时刻 的向量为 。
Hadamard 变换满足 ,故频域逐点乘上 后得到 。再次变换得到 。
设某个真实整数分量为 。在模 下得到的标准剩余数为 ,因此它仍被 整除,商恰为 。算法最后的整除步骤由此合法,即使 在模 下没有逆元也不受影响。
因此算法输出的每一项都等于题目定义的 。
复杂度分析
满分算法时间复杂度为 ,空间复杂度为 ,其中 。
- 1
信息
- ID
- 1461
- 时间
- 5000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者