題意:
給出n ,m
(0≤n
≤50,0
≤m≤50
)n,m(0\leq n\leq 50,0\leq m\leq50)
n,m(0≤
n≤50
,0≤m
≤50)
將n只帶編號的豬放入m個不帶編號的房子裡面,要求每個房子至少放乙隻豬,求方案數
題解:第二類斯特林數
s(n,m)=s(n-1,m)*m+s(n-1,m-1);
要用高精,這個資料是會爆long long的,另外記憶化搜尋下,否則時間也會**
code:
#include
#define ll long long
using
namespace std;
inline
intread()
struct bigint
bigint
(int x)}}
}dp[55]
[55];
void
print
(bigint p)
for(
int i=p.len-
1;i>=
0;i--
)printf
("%d"
,p.p[i]);
}bigint operator+(
const bigint &a,
const bigint &o)
while
(carry)
return re;
}bigint operator
*(bigint a,
int o)
while
(carry)
return re;
}bigint s
(int n,
int m)
intmain()
第二類斯特林數總結
標籤 第二類斯特林數 最近做題的時候遇到了一些跟第二類斯特林數有關的東西,發現網上的資料不是很多,於是寫一篇部落格來總結一下。第二類斯特林數 s n,m 表示的是把n個不同的小球放在m個相同的盒子裡方案數。upd 為了看得清楚,有時候我們也用 begin n m end 來表示 s n,m 一般有兩...
演算法 第二類斯特林數Stirling
第二類stirling數實際上是集合的乙個拆分,表示將n個不同的元素拆分成m個集合的方案數,記為 或者。第二類stirling數的推導和第一類stirling數類似,可以從定義出發考慮第n 1個元素的情況,假設要把n 1個元素分成m個集合則分析如下 1 如果n個元素構成了m 1個集合,那麼第n 1個...
學習筆記 第二類斯特林數
在組合數學中,有幾個重要的 遞推數 而筆者今天要介紹的,就是其中的第二類斯特林數。第二類斯特林數 即斯特林子集數 beginn k end 也記作 s n,k 它表示將 n 個兩兩不同的元素,劃分為 k 個互不區分的非空子集的方案數。每次加入乙個新元素時,有兩種方案 根據加法原理,即可得出遞推式 b...