容斥原理
文章平均质量分 53
Clove_unique
All that you have lost can be won back bit by bit as long as you wish for it.
展开
-
[UOJ#279][UTR#2B]题目交流通道(floyed+并查集+容斥)
题目描述传送门题解先贴上jiry的题解,讲的还是不错的 http://jiry-2.blog.uoj.ac/blog/2242 然后说一下我觉得比较重要的地方首先这道题怎么来考虑呢?考虑将最短路为0和最短路非0来求 将两两最短路为0的点都缩成一个点,那么形成的这个新图就是一个有很多重边的图,并且点之间的最短路已知 要计算方案数,就是要分别计算缩成的点里有多少方案还有每条边都多少方案的乘积原创 2017-01-09 10:16:22 · 628 阅读 · 0 评论 -
[BZOJ3622]已经没有什么好害怕的了(dp+容斥原理+组合数学)
题目描述传送门题解首先判断是否有解,也就是(n+k)/2 mod 2=0 这样的话也就相当于糖比药大的正好有(n+k)/2组 然后剩下的和BZOJ2024就一样了 dpf(i,j)表示前i个糖选出了j个并且比配对的药大的方案数 答案就是强制满足k个-强制满足k+1个+强制满足k+2个… 就是容斥一下,每一次将没选的乘上阶乘(表示任意配对个数),容斥系数是CkiC_i^k代码#include原创 2017-03-23 16:07:53 · 694 阅读 · 0 评论 -
[Codeforces285E]Positions in Permutations(dp+容斥原理+组合数学)
题目描述传送门题解感觉这题难在dp啊 f(i,j,0/1,0/1/2)表示前i个中,选出j个满足要求,第i个位置有/没有,第i个不选/放在i-1/放在i+1的方案数 dp的具体方法看代码吧,感觉状态没法减了 求出了这个之后相当于就求出了前n个选i个满足要求的方案数,剩下的就容斥一下就好啦(乘全排) 容斥系数是CkiC_i^k(貌似选k个的都是这个)代码#include<algorithm>原创 2017-03-23 16:11:59 · 988 阅读 · 0 评论 -
[BZOJ4361]isn(dp+树状数组+容斥原理)
题目描述传送门题解首先dp 令f(i,j)表示选了i个,选到第j个,其中第j个必须选,选出来的顺次排列成一个非降子序列的方案数 那么在整个子序列中选出来i个的方案数就是∑k=1nf(i,k)\sum\limits_{k=1}^nf(i,k) 假如说现在选了i个,也就是最终删除到这i个停止,那么剩下的n-i个数的顺序就无所谓了。但是这里面存在某些不合法的方案,就是删除到i+1个之后就已经满足非降原创 2017-03-23 18:43:32 · 640 阅读 · 0 评论 -
[BZOJ3129][Sdoi2013]方程(容斥原理+扩展lucas)
题目描述传送门题解这题刚开始sb了 首先所有的强制选1个 n1+1~n2的限制就再强制选ai-1个 剩余的需要容斥一下,答案=至少0个超过限制的-至少1个超过限制的+至少2个超过限制的… 2n12^{n1}枚举那些限制强制超过,强制超过的就是要再强制选ai个 然后最后剩下了一个m,x1+x2+…+xn=m,可以利用插板法得出答案极为Cn−1m+n−1C_{m+n-1}^{n-1} 扩展l原创 2017-03-30 21:58:40 · 872 阅读 · 1 评论 -
[BZOJ4596][Shoi2016]黑暗前的幻想乡(容斥原理+矩阵树定理)
题目描述传送门题解首先容斥一下 答案=至少没有公司没有路-至少一个公司没有路+至少两个公司没有路-至少三个公司没有路… 217−12^{17-1}枚举哪些公司没有路,然后将这些公司的路去掉 一个m条边的图的生成树个数可以用矩阵树定理来算 注意:这道题有取模,所以要记录答案的正负,根据行列式,交换一次符号变化一次代码#include<algorithm>#include<iostream>原创 2017-03-24 21:13:25 · 1169 阅读 · 0 评论 -
[BZOJ4455][Zjoi2016]小星星(容斥原理+树形dp)
题目描述传送门题解刚开始的思路是f(i,j,s)表示以i为根的子树,i对应的点为j,其子树对应的点的状态为s的方案数 这样其实是可以dp的,但是时间爆炸啊有没有 事实上正确的思路是差不多的 f(i,j)表示以i为根的子树,i对应的点为j的方案数 这样的话会出来很多的合法的,就是很多点都对应到一个点去了,也就是说有一些点没有被对应到 那么容斥一下就好啦~ 答案=至少0个点不选的方案数-至少原创 2017-03-24 21:33:36 · 740 阅读 · 0 评论 -
[BZOJ4558][JLoi2016]方(数学相关+容斥原理)
题目描述传送门题解这题有毒啊… 首先容斥一下 答案=整个网格内的正方形数-至少有1个点是不合法点的正方形数+恰好有2个点是不合法点的正方形数*2+恰好有3个点是不合法点的正方形数-恰好有4个点是不合法点的正方形数整个网格内的正方形数看似不好算,因为有正着斜着的正方形,但是可以发现每一个正方形都是由其外接正方形决定的,也就是可以枚举外接正方形的边长,一个边长为a的外接正方形可以确定出来a个正方形原创 2017-03-24 22:10:18 · 904 阅读 · 0 评论 -
[Codeforces585E]Present for Vitalik the Philatelist(容斥原理+组合数学)
题目描述传送门 题意:给出一列数,对于每一个数,求选出一个不包含当前数的非空子集满足子集中的每一个数都与当前数互质的方案数,统计总和。题解首先考虑对于一个数,若它为质数,那么所有不是它倍数的数都和所有是它倍数的数互质 假设个数分别为x,y 那么它计算的答案应该为x∗(C1y+C2y+...+Cyy)=x∗(2y−1)x*(C_y^1+C_y^2+...+C_y^y)=x*(2^y-1) 但是原创 2017-03-21 23:11:33 · 917 阅读 · 4 评论 -
[BZOJ3771]Triple(生成函数+FFT+容斥原理)
题目描述传送门题目大意:给出n个互不相同的数,问从中选出1/2/3个数,每一个可以组合出的和有多少种方案。题解首先1个的直接统计 将所有的数搞成一个生成函数,做一遍卷积搞出来选2个的答案 但是2个的存在选了两个相同的,或者选了一个排列,直接除2即可 然后生成函数卷两次统计选3个的答案 这里需要容斥一下,(选3个的答案-强行选了2个一样的*3+强行选了3个一样的*2)/6才是不考虑顺序、选不重原创 2017-04-25 23:23:30 · 945 阅读 · 0 评论 -
[BZOJ2916][Poi1997]Monochromatic Triangles(容斥原理+组合数学)
题目描述传送门题解首先容斥一下~ 同色三角形=总三角形-不同色三角形 总三角形的数量就是C3nC_n^3 不同色三角形一定存在一对异色边 枚举每一个点,以这个点为异色边的连接点选一对异色边,剩下的一条边无所谓了 但是一个三角形会被统计两边(两个连接点),除2就行了代码#include<algorithm>#include<iostream>#include<cstring>#incl原创 2017-03-23 14:29:04 · 813 阅读 · 0 评论 -
[BZOJ2024][SHOI2009] 舞会(dp+容斥原理+高精度)
题目描述传送门题解首先dp求出来f(i,j)表示从前i个女生中选出j个和男生配对满足女生比男生高的方案数 然后如果要是要求正好k个的话就是一个容斥,强制选k个,k+1个…容斥系数为CkiC_i^k 那么就是0..k做k+1遍容斥就行了代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#inclu原创 2017-03-23 11:04:57 · 1253 阅读 · 0 评论 -
[BZOJ3235][Ahoi2013]好方的蛇(单调栈+容斥原理)
题目描述传送门题解heheda管这叫小学生容斥 首先求出以某一个点为左上角、左下角、右上角、右下角的矩形的数量 这个没法dp,但是可以直接用一个单调栈求出来。预处理出某一个点向上向下最远延伸到的长度,单调栈中的每一个点都是能组成矩形的合法顶点 然后枚举每一个点(i,j),以这个点为左上角的矩形可以和除去i..n,j..n范围内的矩形配对,这样利用右下角矩形数量的二维前缀和加加减减能得到答案原创 2017-03-23 07:39:41 · 1050 阅读 · 0 评论 -
[BZOJ2393]Cirno的完美算数教室(容斥原理)
题目描述传送门题解此题的数据范围应为10910^9. 首先找出[1,r]中所有的baka数,可以计算出只有21+22+..+29=10232^1+2^2+..+2^9=1023个。 其次可以发现当存在两个baka数abab满足a|ba|b的话,那么b是没有价值的,根本不用判断。 所以就把baka数中有因数也是baka数的剔除掉,可以发现只剩下了499个数。 然后可以进行dfs,x,y,lcm原创 2016-11-17 11:26:59 · 803 阅读 · 0 评论 -
[BZOJ1272][BeiJingWc2008]Gate Of Babylon(容斥原理+组合数学lucas定理)
题目描述传送门题解首先容斥一下 答案=至少0个不满足限制的-至少一个不满足性质的+至少2个不满足性质的… 2t2^t枚举然后计算每一个的答案 假设我们现在要在n种物品中选出m个,相当于是将m个小球放在n个盒子里,允许为空 那么组合数就是Cn−1n+m−1C_{n+m-1}^{n-1} 但是这道题是“至多”m个,那么应该求的是Cn−1n−1+Cn−1n+Cn−1n+1+...+Cn−1n+m原创 2017-03-28 17:38:59 · 791 阅读 · 0 评论 -
[BZOJ1853][Scoi2010]幸运数字(容斥原理)
题目描述传送门题解和BZOJ2393基本一样 数据范围大一些,需要将b排序先选大的让它尽量剪枝代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define LL long longLL l,r,ans;LL a[300原创 2017-03-21 21:58:20 · 605 阅读 · 0 评论 -
[BZOJ2986]Non-Squarefree Numbers(二分+容斥原理)
题目描述传送门题解和BZOJ2440基本一样,只不过是补集而已 用莫比乌斯函数当容斥系数代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 300005#define LL long longLL n,a原创 2017-03-21 22:00:23 · 554 阅读 · 0 评论 -
[BZOJ2839]集合计数(容斥原理+组合数学)
题目描述传送门题解首先考虑固定k个元素,方案为CknC_n^k 还剩下2n−k2^{n-k}个集合,可以任选若干个集合C12n−k+C22n−k+..+C2n−k2n−k=22n−kC_{2^{n-k}}^1+C_{2^{n-k}}^2+..+C_{2^{n-k}}^{2^{n-k}}=2^{2^{n-k}} 但是这样选出来的有可能有不合法的,交集大小可能大于k,所以要减去k+1,加上k+2…原创 2017-03-21 23:31:34 · 1479 阅读 · 0 评论 -
[BZOJ2440][中山市选2011]完全平方数(二分+容斥原理)
我想我还没有成熟到可以原谅背叛。原创 2016-05-02 19:28:14 · 606 阅读 · 0 评论 -
[BZOJ1042][HAOI2008]硬币购物(dp+容斥原理)
题目描述传送门题解首先dp求出在不限硬币的个数的条件下,组成价值为i有多少种方案sol(i) 这样对于这道题来说sol(s)会多出来很多不合法的方案,因为硬币的个数有上限 那么可以先规定哪些硬币选择的时候超过了上限,对于第i种硬币,不合法的方案应该是sol(s-ci*(di+1)) 但是如果直接减掉4种硬币是不行的,因为有可能存在方案若干种硬币都超过了上限 所以这就是一个容斥了,答案应该为总原创 2017-03-22 10:45:54 · 581 阅读 · 0 评论 -
[BZOJ3198][Sdoi2013]spring(hash+容斥原理+组合数学)
题目描述传送门题解可以通过枚举+hash求出有i位对应相同有多少对 设其为f(i) 那么答案应该为f(k)∗Ckk−f(k+1)∗Ckk+1...f(6)∗Ck6f(k)*C_k^k-f(k+1)*C_{k+1}^k...f(6)*C_6^k 容斥系数是组合数的原因是即使不考虑有i为对应相同的和有i+1位对应相同的有交集,还是会选出很多重复的情况,所以应该同时将其去重刚开始hash挂了一个ma原创 2017-03-22 10:57:47 · 744 阅读 · 0 评论 -
[BZOJ4710][Jsoi2011]分特产(容斥原理+组合数学)
题目描述传送门题解这道题的限制其实挺不明显的,应该是“每个人都至少有一个” 也就是说对于所有的物品,将其划分成n部分,每部分不能为空,问总的方案数 可以如果利用插板法的话,把n个相同的小球放到m个不同的盒子里有Cm−1n+m−1C_{n+m-1}^{m-1}种方案,不过这个只能求出允许空的方案数,对每一种特产都讨论的话,总方案数即为∏iCn−1ai+n−1\prod_iC_{a_i+n-1}^{原创 2017-03-22 14:18:11 · 1844 阅读 · 0 评论 -
[BZOJ3456]城市规划(组合数学+容斥原理+NTT+多项式求逆)
题目描述传送门题目大意:求n个点的无重边无自环无向连通图数目。题解这题好强啊。。设f(i)f(i)表示与1连通的连通块大小为i(包括1)的连通图数目 如果要是将i个点之间的2i(i−1)22^{i(i-1)\over 2}条边随便连的话会有一些不合法的方案,即有一些点和i不连通,所以这里要容斥一下 f(i)=2i(i−1)2−∑j=0i−1Cj−1i−1⋅f(j)⋅2(i−j)(i−j−1)2f原创 2017-04-26 17:48:20 · 1084 阅读 · 0 评论