組合數學12

2022-05-02 05:54:08 字數 2203 閱讀 9246

將有標號記為l(labelled) 無標號記為u(unlabelled)

a.無限制

b.每個盒子至少有乙個球

c.每個盒子至多有乙個球

每個小球都有\(m\)種放法,所以就是\(m^n\)。

第二類斯特林數是要求盒子都一樣,所以我們先算出來盒子都一樣的方案數,再乘上乙個\(m!\)就行了。

第二類斯特林數:

\(f[i][j]\)表示\(i\)個小球放進\(j\)個盒子裡,每個盒子至少有乙個小球的方案數。

轉移方程:

\(f[i][j]=f[i-1][j]*j+f[i-1][j-1]\)。

理解:考慮最後乙個小球,一種情況是它單獨乙個盒子,這樣方案數就是\(f[i-1][j-1]\)(前j-1個球放進i-1個盒子裡的方案數)。另一種情況是它和其他小球放進乙個盒子裡,這樣先把前i-1個小球放好,也就是\(f[i-1][j]\),然後第i個小球有j種選擇,所以這種情況的方案數為\(j*f[i-1][j]\)。

c 的情況當盒子數小於小球數是答案為0,以下預設盒子數大於小球數
每個盒子至多放乙個,也就是說每個盒子只有兩種情況:放和不放。

有\(n\)個小球,也就是說有\(n\)個盒子放,\(m-n\)個盒子不放。\(c_m^n\)從m個盒子中選出\(n\)個來放小球。然後n個有標號的小球放進這n個盒子裡有\(n!\)種放法。

第二類斯特林數再稍微加點東西。

列舉有幾個盒子為空,所有的方案數加起來。

標準的第二類斯特林數。

如果能放的話,不管怎麼放都是一樣的。每個球佔乙個盒子,盒子都一樣。

隔板法解決不了有空盒子的情況。所以我們把小球變成\(n+m\)個,相當於預先把每個盒子裡放乙個小球,最後再拿走。

方案數:\(c_^\)

直接上隔板法 \(c_^\)

從\(m\)個盒子中選出\(n\)個放小球。

\(c_m^n\)

dp\(f[i][j]\)表示\(i\)個小球放進\(j\)個盒子裡的方案數。

轉移:一種情況是有空盒,由\(f[i][j-1]\)轉移過來,也就是有乙個空盒的情況。只由這一種轉移過來,兩個及以上的空盒會包含在這裡邊。因為\(f[i][j-1]\)的答案已經算好了,這裡面一定有有空盒的情況。

一種情況是沒有空盒,先拿出\(j\)個小球來,每個盒子裡放乙個,也就是由\(f[i-j][j]\)轉移過來。

先拿出\(m\)個小球每個盒子裡放進乙個,然後就和uua一樣了。

除了不合法的情況,就只有一種放法。

(不是我的**

#include#include#include#include#define ll long long

using namespace std;

inline void read(ll &x)

while(s>='0'&&s<='9')

x*=f;

}inline void print(ll x)

const int n=100010;

const int mod=998244353;

string s;

ll n,m,f[1005][1005];

ll pow(ll x,ll y)

return ret;

}ll c(ll x,ll y)

ll lucas(ll x,ll y)

ll calt(ll x,ll y)

if(y>x)

}ll ans1,ans2;

if(f[x][y-1])

ans1=f[x][y-1];

else

if(f[x-y][y])

else

return (ans1+ans2)%mod;

}ll cal(ll x,ll y)

return f[x][y];

}int main()

if(s=="uub")

else

}if(s=="uuc")

if(s=="ula")

if(s=="ulb")

if(s=="ulc")

if(s=="lua")

if(s=="lub")

else

} if(s=="luc")

if(s=="lla")

if(s=="llb")

if(s=="llc")

else

}return 0;

}

組合數學 求組合數

對於求組合數,要根據所給資料範圍來選擇合適的演算法 這道題中所給的資料範圍適合用打表的方法直接暴力求解 先用4e6的複雜度預處理出所有的情況,再用1e4的複雜度完成詢問即可 include using namespace std const int n 2010 const int mod 1e9 ...

數學 組合數學

mod must be a prime const int mod 1e9 7 namespace combinatory ll inv ll x ll fac maxn invfac maxn void initc int n ll a ll n,ll m ll c ll n,ll m ll d ...

組合數學筆記

從n個數中選m個數,每個數至多選一次,方案數 性質 c n,0 c n,n 1 c n,m c n,n m c n,m c n 1,m 1 c n 1,m 楊輝三角 二項式展開 x y n i 0.n c n,i x iy n i 那這裡先說一下楊輝三角 前提 每行端點與結尾的數為1 每個數等於它上...