第一類斯特林數還不怎麼會呢,於是就先寫第二類了
第二類斯特林數\(\beginn\\m\end\)表示把\(n\)個元素分配到\(m\)個無標號集合的方案數
遞推形式是
\[\beginn\\m\end=\beginn-1\\m-1\end+m\beginn-1\\m\end
\]就是對於這個新加進來的元素要不然新開乙個集合,要不然放到之前的\(m\)個集合中的乙個
之後這個東西看起來非常容斥啊,於是就有乙個喜聞樂見的容斥形式
\[\beginn\\m\end=\frac\sum_^m(-1)^k\binom(m-k)^n=\sum_^k\frac\times \frac
\]顯然是乙個卷積形式,於是我們可以在\(o(nlgn)\)時間內捲出一行的第二類斯特林數
第二類斯特林數比較厲害的乙個地方就是和\(x^k\)是有關係的
\[n^k=\sum_^k\begink\\i\end\binomi!
\]\(n^k\)的組合意義顯然就是把\(k\)個球放到\(n\)個盒子裡的方案數,於是我們從\(n\)個盒子裡選出\(i\)個,把\(k\)個球放進去
顯然\(\binomi!\)就是排列數,於是第二類斯特林數還跟下降冪有關係
\[n^k=\sum_^k\begink\\i\endn^
\]我們利用上面的這個東西還能用來求自然數的冪次方和
\[\begin
&\sum_^ni^k\\
=&\sum_^n\sum_^k\begink\\j\end\binomj!\\
=&\sum_^k\begink\\j\endj!\sum_^n\binom\\
=&\sum_^k\begink\\j\endj!\binom\\
=&\sum_^k\begink\\j\end\frac\\
=&\sum_^k\begink\\j\end\frac}}
\end
\]其中有一步是\(\sum_^n\binom=\binom\)可以理解為從\(n+1\)裡選擇\(j+1\)個,我們列舉第乙個選擇的位置
這個東西處理斯特林數之後利用逆元可以做到\(o(k)\),但是我們每次暴力算\(\frac}}\)可以不用逆元做到\(o(k^2)\)
第一類斯特林數\(\beginn\\m\end\)表示把\(n\)球分成\(m\)個圓排列的方案數
遞推形式
\[\beginn\\m\end=\beginn-1\\m-1\end+(n-1)\beginn-1\\m\end
\]就是新加進來的這個元素要不然單獨成為乙個圓排列,要不然跟在之前的\(n-1\)個元素的後面
這個東西要是想求一行的話沒有像第二類斯特林數那樣清爽的容斥形式,不過有乙個生成函式
\[\prod_^(x+i)
\]這個非常顯然了,就是把最基本的遞推形式用生成函式寫了一遍,乘\(x\)就是\(\beginn-1\\m-1\end\)向\(\beginn\\m\end\)轉移,乘上那個\(i\)就是讓\(\beginn-1\\m\end\)乘上\(n-1\)向\(\beginn\\m\end\)轉移
我們可以用分治乘法+\(ntt\)做到\(o(nlg^2n)\),好像還有乙個非常牛逼的\(o(nlgn)\)的做法,但是不會了
第一類斯特林數乙個非常重要的性質就是
\[x^=\sum_^k(-1)^\begink\\i\endx^i
\]又把次冪和下降冪扯上了關係
考慮證明?寫不動了,我要抄yyb的
\[\beginx^}&=(x-n)x^\\
&=(x-n)*\sum_^n\beginn\\i\end(-1)^x^i\\
&=\sum_^\beginn\\i-1\end(-1)^x^-n\sum_^\beginn\\i\end(-1)^x^\\
&=\sum_^\beginn\\i-1\end(-1)^x^i+n\sum_^\beginn\\i\end(-1)^x^i\\
&=\sum_^(\beginn\\i-1\end+n*\beginn\\i\end)(-1)^x^i\\
&=\sum_^\beginn+1\\i\end(-1)^x^i
\end
\]還是先把柿子搬上去
如果存在
\[g(n)=\sum_^n\beginn\\i\endf(i)
\]就會有
\[f(n)=\sum_^n(-1)^\beginn\\i\endg(i)
\]來一道例題
給出乙個 \(n×m\) 大小的矩形,每個位置可以填上\([1,c]\)
中的任意乙個數,要求填好後任意兩行互不等價且任意兩列互不等價,兩行或兩列等價當且僅當對應位置完全相同,求方案數 。
\(n,m≤5000\)
考慮一下只要求行不相同,列不限制,方案數是多少;由於行的等價類有\(c^m\)中,所以從這\(c^m\)種等價類中選\(n\)的方案就是\((c^m)^\)
設\(f(m)=(c^m)^\),\(g(m)\)表示\(m\)列要求行列均不相同的方案,即我們要求的答案
考慮找一下\(f,g\)之間的關係,不難寫出乙個這樣的柿子\(f(m)=\sum_^m\beginm\\i\endg(i)\),即列舉共有\(i\)種不同的列,用第二列斯特林數把\(m\)列分進這\(i\)種類裡去,同時保證了每一列非空;之後大力現在一共只有\(i\)種本質不同的列了,於是乘一下\(g(i)\)就好了
現在愉快的斯特林反演即可,\(g(m)=\sum_^m(-1)^\beginm\\i\endf(i)=\sum_^m(-1)^\beginm\\i\end(c^i)^\)
知識點簡單總結 斯特林數 斯特林反演
第一類斯特林數 n 元置換分解為 k 個獨立輪換的方案數,即 begin n k end n 1 begin n 1 k end begin n 1 k 1 end.第二類斯特林數 n 個元素分成 k 個非空集合的方案數,即 begin n k end k begin n 1 k end begin...
第二類斯特林數總結
標籤 第二類斯特林數 最近做題的時候遇到了一些跟第二類斯特林數有關的東西,發現網上的資料不是很多,於是寫一篇部落格來總結一下。第二類斯特林數 s n,m 表示的是把n個不同的小球放在m個相同的盒子裡方案數。upd 為了看得清楚,有時候我們也用 begin n m end 來表示 s n,m 一般有兩...
數的長度 斯特林公式的運用
時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 n!階乘是乙個非常大的數,大家都知道計算公式是n n n 1 2 1.現在你的任務是計算出n!的位數有多少 十進位制 輸入 首行輸入n,表示有多少組測試資料 n 10 隨後n行每行輸入一組測試資料 n 0 n 1000000 輸...