1. 程式人生 > 其它 >LGP4916口胡

LGP4916口胡

第一眼,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\)

是一直不會變的。變的是多項式取哪一項。

直接把這兩個東西寫開,卷一下就好了。