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 #include3overusing
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 }
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個人沒分到 當前方案數 ...