高精 第二類斯特林數(洛谷P3904)

2021-09-29 11:25:46 字數 977 閱讀 9831

題意:

給出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...