記 \(s(n,m)\) 表示,把 \(n\) 個不同的小球,放在 \(m\) 個相同的盒子裡,且每個盒子至少有 \(1\) 個球,的方法數。
記 \(s(n,m)\) 表示,把 \(n\) 個不同的元素,劃分為 \(m\) 個非空集合的方法數。
顯然 \(s(0,0)=1\) ,而 \(s(n,0)\) 當 \(n\geq 1\) 時顯然是不合法的方案, \(s(0,m)\) 當 \(m\geq 1\) 時因為至少有 \(1\) 個空盒子所以也顯然是不合法的方案。
\(s(n,m)=s(n-1,m-1)+m*s(n-1,m)\)
含義是,多乙個新的球,那麼假如再新加乙個盒子去裝,顯然是一種辦法,否則要把這個球放在先前已有的 \(m\) 個盒子中的任意乙個,由於新加的這個小球是全新的,所以這個和組合數的遞推公式不一樣。
使用遞推去求解需要 \(o(nm)\)。
使用通項去求解只需要 \(o(mlogn)\)。
ll qpow(ll x, int n)
x = x * x;
if(x >= mod)
x %= mod;
n >>= 1;
}return res;
}ll s(int n, int m)
sum *= qpow(fac1, mod - 2);
if(sum >= mod)
sum %= mod;
return sum;
}
使用卷積可以求出同乙個 \(n\) 在不同的 \(m\) 取值下的所有的斯特林數。詳見下面部落格。 第二類斯特林數 學習總結
前幾天在bz上的考試考到有關第二類斯特林數的東西 雖然說那道題目到最後並不需要用這個東西來化簡把 不過抱著學習的態度還是學了學有關第二類斯特林數的東西 第二類斯特林數s n,m 定義為把n個元素劃分成m個無序集合的方案數 根據這個定義我們不難寫出遞推式 設狀態s i,j 討論第i個元素是否單獨乙個集...
組合數學 斯特林數
斯特林數包括第一類斯特林數和第二類斯特林數 第一類斯特林數 定義 n個不同的元素構成m個圓排列 迴圈排列 的方法數 分成兩種情況 1 前n 1個元素已經構成了m個圓排列,只要將第n個元素插入1 n 1個元素中任意乙個元素的左邊即可 n 1 s n 1,m 2 前n 1個元素已經構成了m 1個圓排列,...
模板 第二類斯特林數 列
從通項公式入手好像不行了。法一 直接從定義入手 把n個球劃分成m個等價類 假設等價類兩兩不同,最後除以m!直接上egf,a 1 i x i a m的i次項係數,再乘上i!再除以m!法二 從遞推公式入手 s n,m s n 1,m 1 m s n 1,m 設ogf s m x 是第m列二斯的ogf,則...