有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個...