題解 bzoj4710 分特產

2022-05-07 23:03:14 字數 1031 閱讀 9777

如果沒有每個人都分的限制, 直接上組合數即可

考慮容斥

設\(f[i]\)為至少有\(i\)個人沒有分到特產的方案, 我們可以知道

\[\displaystyle

f[i] = \binom\prod_^\binom

\]其中\(a_j\)為第\(j\)種特產的數量

\[\displaystyle

\binom = c_n^m

\]解釋一下上面的東西吧, 首先從\(n\)個數中選出\(i\)個數代表不選, 然後對於每一種特產, 相當於拿\(n - 1 - i\)塊隔板插入將這\(a_j\)個特產分為\(n - i\)塊, 注意到其中有一些塊是可以為空的, 我們新建\(n - 1 - i\)個點, 要是選了這些點中的第\(i\)個點就代表第\(i\)塊為空, 所以最後就是

\[\displaystyle

\prod_^\binom

\]然後容斥係數是

\[\displaystyle

(-1)^i

\]各位畫個韋恩圖就知道了

所以, 最後的答案是

\[ans = \sum_^(-1)^if[i]

\]

#include #include #include #include #include #include #define itn int

#define read read

#define n 2005

#define mod 1000000007

using namespace std;

int n, m, a[n], c[n][n];

long long ans = 0;

inline int read()

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

return x * w;

}int main()

for(int i = 0; i <= n; i++)

printf("%lld\n", ans);

return 0;

}

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

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

題解 BZOJ 4717 裝備

傳送門 由於這道題是許可權題,所以題面我也放在這裡了 我不是許可權狗 題目背景 小q最近喜歡上了一款遊戲,名為 艦隊connection 在遊戲中,小q指揮強大的艦隊南征北戰,從而成為了一名dalao。在遊戲中,不僅船隻能力很重要,搭配合適的裝備更是如虎添翼。小q潛心研究配裝三十年,終於 把裝備湊齊...

題解 BZOJ 3910 火車

3910.火車 給你一棵樹,給你乙個訪問節點的序列,按照先後順序去訪問序列中的從未經過過的節點,問經過了多少條邊。並查集 lca 用並查集維護每個點是否走過,如果走過了就將該點和他的第乙個沒被走過的父親合併。lca 用來計算距離,在路徑上暴跳的時候維護並查集,因為每個點最多被經過一次,複雜度 o n...