首先,使用匹配函数 \(P(x_i, x_j) = x_ix_j - x_i^2[j \neq 0]\)。
容易发现,当存在 \(i \neq j\) 时,\(x_ix_j\) 的系数只会增加,因此根据 Schwartz-Zippel
引理,随机一组 \(x_{1 \sim 26}\) 对应 a~z
即可。
然后,对于 NTT
的过程,有两个卡常的点:
一是点积 reverse
后转卷积的过程是舍弃低位的,故利用循环卷积的特性可以将 NTT 长度减半。
二是 NTT
是线性的,NTT
的结果可以累加后再进行一次 INTT
。
这样就能以 max = 70ms
过掉本题 \(3 \times 10 ^ 5\) 的数据(