首页 > TAG信息列表 > Devu

AcWing 214. Devu和鲜花

题目传送门 \(Devu\) 有 \(N\) 个盒子,第 \(i\) 个盒子中有 \(A_i\) 枝花。 同一个盒子内的花颜色相同,不同盒子内的花颜色不同。 \(Devu\) 要从这些盒子中选出 \(M\) 枝花组成一束,求共有多少种方案。 若两束花每种颜色的花的数量都相同,则认为这两束花是相同的方案。 结果需对 10^9

Devu和鲜花

214. Devu和鲜花 Devu 有 N 个盒子,第 i 个盒子中有 Ai 枝花。 同一个盒子内的花颜色相同,不同盒子内的花颜色不同。 Devu 要从这些盒子中选出 M 枝花组成一束,求共有多少种方案。 若两束花每种颜色的花的数量都相同,则认为这两束花是相同的方案。 隔板法 + 容斥原理 设 \(x_i\) : 第

CF451E Devu and Flowers

Link Desciption 求一个可重集 \(S\) 的 \(m\) 子集的个数。\(S\) 的不同元素个数为 \(n\),\(n\leq 20\)。每种元素的个数 \(a_i\leq 10^{12}\) 。答案对 \(10^9+7\) 取模。 Solution 如果每种元素都有无数种的话,那么直接用插板法可得方案数为 \(\binom{m+n-1}{n-1}\)。但是问题是

AcWing214 Devu和鲜花 (容斥原理)

经典容斥原理,这其实是离散数学解不定方程或者高中组合数学的隔板法。 原问题可以转换为 x1+x2+x3+...xn=M+N; 又因为每个都有限制需要<=a[i],因此我们可以反向考虑,总数-不合法数 而不合法数是所有>a[i]的合集,因此可以用容斥原理拆分,这里可以用二进制的表示方法表示取哪几个。 代码

CF451E Devu and Flowers

CF luogu De javu 和开花 咕了半个月没更博了(捂脸) 这题如果值域小显然可以背包,但是这题是\(n\)小值域大,\(20\)可以让人想到状压.分析一下又发现可以容斥,枚举哪些物品超过个数限制,设枚举集合为\(S\),然后每个物品都要用\(a_i+1\)个,那么这个集合的贡献为\((-1)^{|S|}\binom{s-

【CF451E】Devu and Flowers

题目大意:求多重集合的组合数, \(N \le 1e14,M \le 20\)。 题解: 考虑容斥原理,具体做法是枚举所有情况,即:枚举子集,第 i 位为 1 表示满足第 i 个条件,正负号采用 sign 进行判断。 对于本题的组合数来说,上指标过大,导致没办法预处理阶乘和逆元进行快速回答,不过下指标很小,可以按照定义进行枚

CF451E Devu and Flowers

多重集求组合数,注意到\(n = 20\)所以可以用\(2 ^ n * n\)的容斥来写。 如果没有限制那么答案就是\(C(n + s - 1, n - 1)\)。对每一个限制依次考虑,加上有一种选多的,减去有两种选多的,以此类推。 由于\(n <= 20\),所以组合数事实上是可以\(O(N)\)求的=_= #include <bits/stdc++.h> usin