洛谷 P4173 殘缺的字串 卡常小記

JerryTcl發表於2024-03-13

首先,使用匹配函式 \(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\) 的資料(