HDU 2512 (斯特林數,貝爾數)

2021-09-12 15:44:23 字數 1027 閱讀 4171

題目意思:給你n個數,讓你組成從1~n個不重集合的組合數目是多少?

題解思路:

知識點:組合數學中的第二斯特林數,貝爾數

注意,在這道題裡,i要從1開始,接下只要先求s2(0,0)~s2(2000,2000),  之後逐次累加到bell[n]即可

#include#define register int rint

#define inf 0x3f3f3f3f3f

#define mod 1000000007

#define mem(a,b) memset(a,b,sizeof(a))

#define pi 3.141592653589793

using namespace std;

typedef long long ll;

typedef unsigned long long ull;

typedef pairpii;

const int n=2020;

const int max=1e4+20;

const double esp=1e-6;

inline int rd()

while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();

return x * f;

}int n,t;

int bell[n],s2[n][n];

int main()

while(t--)

{n=rd();

bell[0]=0;

for(int i=1;i<=n;++i) bell[i]=(bell[i-1]+s2[n][i])%1000;

cout《參考部落格:

備註:一開始提交的時候碰到了記憶體超限,我又重新更改了一下,順便寫一下記憶體的求公式:

假設申請了 int a[x][x],那麼你的記憶體為y(mb) = x*x*4/1024/1024

乙個int 等於 4個位元組,乙個位元組等於乙個byte,1kb=1024byte,1mb=1021kb.......

斯特林數和貝爾數

版權說明 抄寫了hypoc的部落格 符號 beginn m end 或 s n,m 意義 n 個不同球穿成 m 條項鍊的方案數。第 n 個球接在前面 n 1 個小球中某乙個的後面或新開一條項鍊。遞推式 s n,m n 1 s n 1,m s n 1,m 1 複雜度 o nm 考慮生成函式優化。第 i...

組合數學之斯特林數 貝爾數

斯特林數經常和組合數學中的上公升下降問題聯絡到一起。第一類斯特林數 將n個不同的元素構成m個不同的環的方案數目 兩環不想等當且僅當任一不能通過旋轉得到另一環 dp i j 表示i個元素構成j個環 有兩種情況可以得到dp i j 1.前i 1個元素構成了j 1個不同的環,第i個元素單獨成環 共有 dp...

第一 二類斯特林數,貝爾數

s1 n m 表示把n個元素劃分成m個非空迴圈排列集合的方案數 void getstirling s2 n m 表示把n個元素劃分成m個非空集合的方案數 void getsstirling 簡單闡述一下為什麼不用給s2 i i 賦值為1 i 1,j 1時 s2 1 1 1 這是由s2 i 1 1得到...