UOJ #888. 【UNR #8】裡外一致

275307894a發表於2024-08-18

題面傳送門

唉,不會生成函式。

考慮一種出現次數為 \(x\) 的數,它可以被分到其中一邊,也可以兩邊同時分。前者會有 \(1\) 的係數,後者會有 \(2^x-2\) 的係數。

用生成函式來刻畫,則一種出現次數為 \(c\) 的數的 GF 為 \(x+\frac{1}{x}+2^c-2\),而我們要求的就是所有出現過的數的 GF 乘起來以後 \(0\) 次項的係數。

將上面的 GF 進一步改寫為 \(((\sqrt x-\frac{1}{\sqrt x})^2+2^c)\),則設 \(z=(\sqrt x-\frac{1}{\sqrt x})^2\),可以寫出一個 DP,記 \(f_i\) 表示有 \(i\) 個沒有選 \(z\),由於模數的特殊性質,\(i\leq 64\)。使用莫隊可以做到 \(O(n\sqrt q\log p)\)

但是這還不夠優。使用莫隊求出出現次數為 \(i\) 的數有幾種後,按照出現次數從大到小進行這個 DP。當考慮到出現次數為 \(i\) 的數的時候, \(dp\) 的狀態數不超過 \(\frac{\log p}{i}\),因此 dp 的複雜度就是 \(\sum \frac{\log ^2p}{i^2}=O(\log ^2p)\),總複雜度就是 \(O(n\sqrt q+q\log ^2p)\)

submission

相關文章