LGP4916口胡
阿新 • • 發佈:2022-03-01
第一眼,Burnside 直接丟上去啊。
設 \(f(n,m)\) 是有 \(n-m\) 個白色珠子和 \(m\) 個白色珠子的滿足題意的環的個數,容易得到答案是:
\[\sum_{d|n,d|m}f(\frac{n}{d},\frac{m}{d})\varphi(d) \]考慮左邊這個 \(f\) 怎麼做。
我們將環斷開,列舉字首和字尾的黑色珠子個數,有:
\[f(n,m)=\sum_{x+y\leq k,x+y+2\leq n}g(n-x-y-2,m-x-y)=\sum_{i=0}^{\min(k,n-2)}(i+1)\times g(n-i-1,m-i) \]其中 \(g(n,m)\) 為不存在超過 \(k\)
我們似乎可以接受單次 \(O(n\log n)\) 計算 \(f\) 的演算法。
考慮上生成函式。我們強制欽定每一段黑珠子後面跟上一個白珠子(包括 \(0\) 個白珠子),那麼一段的 OGF 就是 \(\sum_{i=0}^{k}x^i=\frac{1-x^{k+1}}{1-x}\)。
\(g\) 的單點就是 \(g(n,m)=[x^n](\frac{1-x^{k+1}}{1-x})^{n-m}\)。
寫開:
\[g(n,m)=[x^n]\frac{1}{(1-x)^{n-m}}\times(1-x^{k+1})^{n-m} \]\[[x^n](\sum \binom{i+n-m-1}{i})\times(\sum_{i=0}^{n-m}\binom{n-m}{i}x^{(n-m)(k+1)}) \]注意到你在單次處理時,這個 \(n-m\)
直接把這兩個東西寫開,卷一下就好了。