題解 分特產 組合數 容斥

2022-02-23 20:38:14 字數 908 閱讀 9240

一道小水題。

假如沒有這個要求每個人都要有乙個特產的限制我們直接可以組合數。

我們又發現人(本質上)是沒有區別的,所以容斥的複雜度只有\(o(n)\)

\(n\)個人分\(m\)個特產,每個特產有\(a_i\)個,人可以不拿特產,的方案數就是把\(a_i\)分成\(n\)份,而且可以分為\(0\)份。

這個的答案就是

\[f(n)=\prod_^m

\]意思就是有\(a_i+n\)個球分成不為空\(n\)份的方案,新建\(n\)個球,選了這\(n\)個球代表你不選。

於是我們就可以容斥出來我們要的答案。

\[\sum_^ (-1)^if(n-i)

\]哦要解釋一下這個式子的意思,\(f(x)\)裡面的方案數包括了所有大於\(x>\)它的的方案數。我們才要容斥。

所以列舉欽定至少\(i\)個人乙個也沒有,最終我們要的是0個人乙個也沒有。

//@winlere

#include#include#include#include#define int long long

using namespace std; typedef long long ll;

inline int qr()

const int mod=1e9+7;

const int maxn=2e3+5;

int jc[maxn];

int inv[maxn];

int data[maxn];

inline int pow(int base,const int&p)

inline int c(const int&n,const int&m)

signed main()

cout

}

交流 題解(容斥原理 組合數)

在此。給你n nn個字串,其中選擇k kk個,如果合法則將 變成字元 26 2626 個都可以,前提是合法 構成乙個只含小寫字母的字串,求可以變成多少種字串。合法要求 乙個位置上要不只有一種小寫字母,要不是 解法 可以用狀壓dpdp dp或者容斥原理 組合數完成。首先鋪墊三個內容 交集 並集 集合大...

魔改森林 題解 dp 容斥 組合數學

給你乙個n m的方格圖,中間有k個障礙,要你求從左下角到右上角有多少種方案mod 998244353 這個題目真是很oi.首先 max n,m 1e3 直接 o n 2 dp 如果方格數量很多,觀察障礙物很少,則可以想到容斥的思維 然後再用組合數學預處理一下 一定要注意要預處理到2e5 wa了我一輩...

組合數學 容斥 集合計數

首先我們知考慮只有一種交集 交集的大小為k,那麼有2n k個子集包含了這k個元素 確定k個元素,再從剩下n k個元素任意選取,有2n k種組合 用這2n k個子集能有2 2 n k 種組合,再減去1個空集 一共有ck n種交集,這樣得出tmp k ck n 2 2 n k 1 種方法 這裡面包含了交...