9 27T1 組合數 容斥原理

2022-05-01 18:45:10 字數 1730 閱讀 2322

1.分特產2414

(cut)

【問題描述】

jyy 帶隊參加了若干場acm/icpc 比賽,帶回了許多土特產,要分給實驗室的同學們。

jyy 想知道,把這些特產分給n 個同學,一共有多少種不同的分法?當然,jyy 不希望任何乙個同學因為沒有拿到特產而感到失落,所以每個同學都必須至少分得乙個特產。

例如,jyy 帶來了2 袋麻花和1 袋包子,分給a 和b 兩位同學,那麼共有4 種不同的

分配方法:

a:麻花,b:麻花、包子

a:麻花、麻花,b:包子

a:包子,b:麻花、麻花

a:麻花、包子,b:麻花

【輸入】

輸入資料第一行是同學的數量n 和特產的數量m。

第二行包含m 個整數,表示每一種特產的數量。

n, m 不超過1000,每一種特產的數量不超過1000.

【輸出】

輸出一行,不同分配方案的總數。由於輸出結果可能非常巨大,你只需要輸出最終結果

mod 1,000,000,007 的數值就可以了。

【樣例輸入】

5 41 3 3 5

題目**於jsoi2011

我今天早上才做了一道容斥原理的題目。。。結果就考了,我還是沒有做起,考完之後看了下成績還是倒數第二,倒數第一爆了0

光是這一道題只有後面的幾個人沒寫起,其他人全ac

所有的物品,將其劃分成n部分,每部分不能為空,問總的方案數

可以如果利用插板法的話,把n個相同的小球放到m個不同的盒子裡有c(n+m−1,m−1)種方案,不過這個只能求出允許空的方案數,對每一種特產都討論的話,總方案數即為根據容斥原理,答案應該為至少0個盒子為空的-至少1個盒子為空的+至少2個盒子為空的-…至少n個盒子為空的

那麼我們可以每一次強制i個盒子為空,剩餘的再像上面一樣選就行了

答案就是

上面是官方解法,下面談談我的感受

這道題其實當時有那麼一絲絲的感受是容斥原理,但是我也不知道怎麼容斥,但我也沒想到是列舉多少個空的來進行容斥

首先我們考慮把每一種物品分開來處理,也就是一類一類的處理,最後把他們相乘就是當前的狀態

首先我們明顯知道如果m個小球給n個人(允許空出來),答案就是c[n-1][n+m-1]。這個還是知道的

顯然我們要排除有空的情況,對於空出來的情況我們有空1人,2,3,4.。。。直到n

至少空 i 個人,那麼就剩餘 n-i 個人,狀態數就是c[n-i-1][n+m-1-i]前面必須還要乘上c[i][n]代表選哪幾個空著

然後跑一邊容斥原理。。。。

顯然我做不起。。。。慢慢寫吧。。。。

code:

1 #include2 #include3

using

namespace

std;

4int c[2005][2005];5

const

int mod=1e9+7;6

int s[5000];7

intmain()

22if(i%2)26

else

30}

31 ans+=mod,ans%=mod;

32 cout<

33return0;

34 }

over

UVALive 7040 組合數 容斥原理

朵花上色,從m 種顏色裡面選擇恰好k 種顏色,求總數mod 1e9 7種顏色給花上色的話,肯定是k k 1 n 1種方案,但是要求的是恰好k 種,很容易想到用容斥原理解決這個問題。設ai 表示沒選第i 種顏色的種類數目,則結果為 首先有t組資料,每組資料有 3 個數 n,m,k,分別代表一共有 n ...

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

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

bzoj 4710(組合數學 容斥原理)

傳送門 題解 先介紹一條公式 將n個物品分給m個人有c n m 1,m 1 種方案。但是這些方案是包括了不合法的 有些人沒有獲得任何物品 對於這道題,需要保證所有人都分到物品,所以容斥原理解決 ans 0個人沒分到 1個人沒分到 2個人沒分到 n個人沒分到 對於某一種情況 i個人沒分到 當前方案數 ...