HDU4045 第二類斯特林數

2022-05-04 08:45:17 字數 997 閱讀 6549

有n臺機器,每天選擇r臺,要求任意兩台編號差值不小於k,並且r臺機器分成不超過m組。求不重樣的選擇有多少種組合(可以選多少天)。

資料範圍$1\leqslant n,r,k,m\leqslant1000$。

首先從n個元素中選r個元素,任意兩台編號差值不小於k

可以推斷出是把$n-r-(k-1)(r-1)$個相同的球放入$r+1$個盒子裡的方案數

方案數為$\binom$

然後把$r$個元素分成$m$組,允許有空組

方案數為$\sum_^s(r,j)$

其中$s$是第二類斯特林數

結論就是$\binom\sum_^s(r,j)$

注意資料合法性,$n\geqslant (r-1)k+1$

#include #include #include #include #include #include #include #include #include #include #include #define max     1007

#define maxn 10007

#define maxm 20007

#define inf 0x3f3f3f3f

#define ninf 0xc0c0c0c0

#define mod 1000000007

using namespace std;

typedef long long ll;

ll c[max][max]=,s[max][max]=;

//組合數

void initc()

}}//第二類斯特林數

void inits2()

}}int main()

ll ans=0;

for(int i=1;i<=m;i++)

ans=ans*(c[n-(k-1)*(r-1)][r])%mod;

printf("%lld\n",ans);

} return 0;

}

hdu 4045 第二類Stirling數

題目 大意 序號為1到n,選r個東西,序列之差大於等於k,放到m個盒子裡。分為兩部分 1.c n r 1 k r 1 r 插板法。實在不想看高中的東西了 2.就是第二類斯特林數了 s n 1,k s n 1,k 1 ks n 1,k includeusing namespace std typede...

第二類斯特林數總結

標籤 第二類斯特林數 最近做題的時候遇到了一些跟第二類斯特林數有關的東西,發現網上的資料不是很多,於是寫一篇部落格來總結一下。第二類斯特林數 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個...