组合数学
文章平均质量分 56
Clove_unique
All that you have lost can be won back bit by bit as long as you wish for it.
展开
-
[HDU3037]Saving Beans(组合数学Lucas定理)
题目描述传送门 从n棵不同的树上取不超过M颗豆子(豆子无差异),有多少种取法。题解考虑如何求解x1+x2+...+xn=mx_1+x_2+...+x_n=m的解的个数 可以用插板法求解。由于原题xix_i可以为0,但是插板法不能为0,那么可以等式两边同时+n x1+1+x2+1+...+xn+1=n+mx_1+1+x_2+1+...+x_n+1=n+m 这样就相当于有n+m个物品,将其分成n原创 2017-01-14 22:55:24 · 479 阅读 · 0 评论 -
[BZOJ1951][Sdoi2010]古代猪文(lucas定理+中国剩余定理)
题目描述传送门题解写这道题各种傻逼 根据欧拉定理,G∑k|nCkn%P=G∑k|nCkn%φ(P)%PG^{\sum\limits_{k|n}C_n^k}\%P=G^{\sum\limits_{k|n}C_n^k\%\varphi(P)}\%P 模数是质数,φ(P)=P−1\varphi(P)=P-1,然而我刚开始还想什么根n求phi n的所有的因数都可以在n√\sqrt n求出来 然后把P原创 2017-01-16 15:33:22 · 1009 阅读 · 0 评论 -
[Codeforces547C]Mike and Foam(莫比乌斯反演+组合数学)
题目描述传送门题解设f(n)f(n)表示gcd为n的数对个数,F(n)F(n)表示gcd为n的倍数的数对个数 那么F(n)=∑n|df(d)F(n)=\sum\limits_{n|d}f(d) 实际上我们要求的就是f(1)f(1) 那么利用反演公式f(n)=∑n|dμ(d)F(dn)f(n)=\sum\limits_{n|d}\mu(d)F({d\over n}) 可以得到f(1)=∑dμ(原创 2017-03-21 23:02:51 · 1014 阅读 · 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 · 803 阅读 · 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 · 1499 阅读 · 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 · 759 阅读 · 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 · 1863 阅读 · 0 评论 -
[BZOJ2916][Poi1997]Monochromatic Triangles(容斥原理+组合数学)
题目描述传送门题解首先容斥一下~ 同色三角形=总三角形-不同色三角形 总三角形的数量就是C3nC_n^3 不同色三角形一定存在一对异色边 枚举每一个点,以这个点为异色边的连接点选一对异色边,剩下的一条边无所谓了 但是一个三角形会被统计两边(两个连接点),除2就行了代码#include<algorithm>#include<iostream>#include<cstring>#incl原创 2017-03-23 14:29:04 · 824 阅读 · 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 · 704 阅读 · 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 · 997 阅读 · 0 评论 -
[BZOJ4403]序列统计(lucas定理)
题目描述传送门题解首先这道题选出来的数只在于选的数本身,而不在于顺序,以为反正到最后要排序的 令r-l+1=m,也就是一共有m个数可选,那么设每一个数被选的个数为xi,那么x1+x2+…+xm=n 也就相当于将n个小球放到m个盒子里,显然插板,答案为Cm−1n+m−1C_{n+m-1}^{m-1} 那么这道题的答案就是Cm−11+m−1+Cm−12+m−1+...+Cm−1n+m−1C_{1+原创 2017-03-30 18:50:10 · 843 阅读 · 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 · 881 阅读 · 1 评论 -
[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 · 928 阅读 · 4 评论 -
[BZOJ1005][HNOI2008]明明的烦恼(prufer序列+组合数学+高精度)
一个人至少拥有一个梦想,有一个理由去坚强。原创 2016-05-22 08:44:55 · 1628 阅读 · 0 评论 -
[BZOJ3513][MUTC2013]idiots(FFT+组合数学)
题目描述传送门题目大意:给定n个长度分别为ai的木棒,问随机选择3个木棒能够拼成三角形的概率。题解这道题要根据三角形的两边之和大于第三边来做,其实判定的条件就是随机选出来的三条边中较小的两条之和大于第三条边 首先容斥一下,用总的方案数减去不合法的方案数 令F(i)表示两条边和为i的方案数,a(i)表示长为i的木棒有多少个,那么可以写成一个卷积的形式F(i)=∑a(i−j)a(j)F(i)=\su原创 2017-05-04 15:35:10 · 1089 阅读 · 4 评论 -
[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 · 1097 阅读 · 0 评论 -
[COGS2287][HZOI 2015]疯狂的机器人(NTT+组合数学)
题目描述传送门题解本来是想找一道题想一想dp到底是怎么用FFT优化的,然而写完了发现怎么和dp没啥关系呢 也可能是我太弱根本没看出来dp 不过确实是一道好题!在hxy神犇的一些提示下做出来…令g(i)g(i)表示只能上下走,不能左右走,不能不走,走i步最后回到原点的方案数 首先可以发现当i为奇数的时候g(i)g(i)一定为0 接着考虑i为偶数的情况,很显然向上走的步数和向下走的步数一定相等,原创 2017-03-09 21:50:01 · 867 阅读 · 0 评论 -
[BZOJ1815][Shoi2006]color 有色图(dfs+置换群+数论+组合数学)
题目描述传送门题解代码#include#include#include#include#includeusing namespace std;#define LL long long#define N 65int n,now;int a[N],b[N],t[N][N];LL m,Mod,ans,mul[N],inv[N],mi[1800],c[N][N];原创 2017-02-23 21:22:57 · 1580 阅读 · 0 评论 -
卡特兰数 学习笔记
网上关于卡特兰数的讲解一大片,所以就懒得再自己写一遍了 贴上几个觉得不错的讲解 小思Catalan数 从《编程之美》买票找零问题说起,娓娓道来卡特兰数——兼爬坑指南原创 2017-01-29 12:37:41 · 586 阅读 · 0 评论 -
[HDU3944]DP? (组合数学Lucas定理)
题目描述传送门 题意:求在杨辉三角中从(0,0)走到(n,m)路上权值最小的方案%p的值。p为质数。题解杨辉三角是对称的,所以我们只考虑目标点在对称轴左边的情况 观察杨辉三角,可以发现一定是顺着一些1往下走然后斜着走到目标点 即Cmn+Cm−1n−1+Cm−2n−2+...+C1n−m+1+Cn−m,0+n−mC_n^m+C_{n-1}^{m-1}+C_{n-2}^{m-2}+...+C_{n原创 2017-01-15 08:32:19 · 429 阅读 · 0 评论 -
[ZOJ3557]How Many Sets II(组合数学Lucas定理)
题目描述传送门 题意:从n个小球中取m个小球,不能取相邻的小球的方案数题解ZOJ的题号到底是什么鬼畜…这道题是插板法的经典应用 首先我们拿出m个小球,还剩下n-m个小球。这n-m个小球一共有n-m+1个空(左右两边也可以),把这m个小球插入到这n-m+1个空里就是答案,即Cmn−m+1C_{n-m+1}^m 这m个小球的编号取决于它插入的位置,所以和选哪个小球没关系代码#include<alg原创 2017-01-15 09:12:27 · 619 阅读 · 0 评论 -
[HDU4349]Xiao Ming's Hope(组合数学Lucas定理)
题目描述传送门题解这题其实就是求∑i=0nCin%2\sum\limits_{i=0}^n C_n^i\%2 利用Lucas定理,每一次将n和i分解成两个二进制数,然后将它们的组合数乘起来 又因为C00=C01=C11=1,C10=0C_0^0=C_1^0=C_1^1=1,C_0^1=0 所以要想使总体为1,当n的二进制位为1时,有0/1两种选择,当n的二进制位为0时,只有0一种选择 所以如原创 2017-01-15 10:02:32 · 395 阅读 · 0 评论 -
[Codeforces2015ICL,Finals,Div. 1#J]Ceizenpok's formula(扩展Lucas定理+中国剩余定理)
题目描述传送门题解扩展Lucas定理+中国剩余定理模板题。代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cstdio>using namespace std;#define LL long longLL n,m,MOD,ans;LL fast_pow(LL a,LL p,L原创 2017-01-16 09:34:30 · 1195 阅读 · 0 评论 -
[BZOJ2142]礼物(扩展Lucas定理+中国剩余定理)
题目描述传送门题解很简单的题吧Cw1n∗Cw2n−w1∗Cw3n−w1−w2...%PC_n^{w_1}*C_{n-w_1}^{w_2}*C_{n-w_1-w_2}^{w_3}...\% P P不一定是质数所以用扩展lucas+中国剩余定理合并(http://blog.csdn.net/clove_unique/article/details/54571216)代码#include<algorit原创 2017-01-16 13:57:40 · 1518 阅读 · 0 评论 -
[BZOJ1913][Apio2010]signaling 信号覆盖(计算几何+组合数学)
题目描述传送门题解非常神奇的一道思路题,刚开始只会sb暴力 这篇题解讲得非常好orz:http://blog.csdn.net/qpswwww/article/details/45334033代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namesp原创 2017-02-07 19:04:37 · 708 阅读 · 0 评论 -
[BZOJ2729][HNOI2012]排队(组合数学+高精度)
题目描述传送门题解各种分类讨论狗屎题 先任务两个人相同,最后再乘全排 先放好个女生(m+1个空),然后将老师插进去(m+3个空),再将男生插进去两个老师相邻 放在女生中间m-1种,有m-1个空必须放男生,其余随意放在女生旁边2种,有m个空必须放男生,其余随意两个老师不相邻 都放在女生中间C2m−1C_{m-1}^2种,有m-3个空必须放男生,其余随意都放在女生旁边1种,有m-1个空必原创 2017-02-16 19:10:36 · 651 阅读 · 0 评论 -
[BZOJ1856][Scoi2010]字符串(卡特兰数+组合数学)
题目描述传送门题解答案Cnn+m−Cn+1n+mC_{n+m}^n-C_{n+m}^{n+1},模数是质数所以直接处理阶乘然后快速幂计算逆元就行 至于这个公式的推导可以参考卡特兰数的非常规分析 首先Cnn+mC_{n+m}^n是总的方案数,从中减去不合法的方案 对于一个不合法的方案,假设从第2k+1位开始不合法,那么之前一定有k+1个0,k个1,如果将0,1互换就变成了一共有n+1个1,m-1原创 2017-01-29 11:23:57 · 769 阅读 · 0 评论 -
[BZOJ2822][AHOI2012]树屋阶梯(卡特兰数+组合数学+高精度)
题目描述传送门题解答案就是卡特兰数 没觉得这个搭建的方法很像二叉树?代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 1000int n;struct data{int a[N];}ans;int p原创 2017-01-18 20:20:14 · 859 阅读 · 0 评论 -
[BZOJ1485][HNOI2009]有趣的数列(卡特兰数+组合数学)
题目描述传送门题解答案是卡特兰数,因为…打表可知? 但是实际上这道题可以抽象成一个卡特兰数的经典问题——出栈序列问题。 也就是说,问题等价为1-n依次入栈有多少可能的出栈序列 题目要求满足两个条件:奇数项和偶数项分别单增,并且每两个相邻的奇数项和偶数项满足奇数项小于偶数项 可以把这个问题看做:将1-n填到2n个空格中,填到奇数项时必须满足上一个奇数项已经有数,这时相当于是一个元素入栈;填到偶原创 2017-01-18 19:19:24 · 801 阅读 · 0 评论 -
[BZOJ2111][ZJOI2010]Perm 排列计数(组合数学+lucas定理)
题目描述传送门题解首先第一个位置肯定是1 若把i的两个儿子看做i*2和i*2+1,这样就形成了一颗以1为根的有根树 这棵树的形态是不变的,我们需要做的就是将1-n填到每一个节点里然后保证父亲小于儿子 对于一颗子树,我们考虑怎样选才能满足要求,可以发现由于数是1-n,两两数之间的相对大小是不变的,也就是说,不会出现这棵子树中可以填2,3,4而不能填3,4,5的情况 而假设我们选出了若干数填到这原创 2017-01-16 20:32:42 · 553 阅读 · 0 评论 -
[BZOJ2467][中山市选2010]生成树(组合数学)
题目描述传送门题解这道题不应该认为点是不相同的,而是边是不相同的,从样例就可以看出来 枚举中间的环删掉了i条边(CinC_n^i种选择),删掉这i条边之后形成了一个大环和若干个五边形,那么在这个大环上随便选一条边(4*i种选择),在每一个五边形上随便选一条边(4n−i4^{n-i}种选择),相乘就是当前答案,然后全部相加就是答案 popoqqq大爷有一种非常厉害的做法orz:http://blo原创 2017-01-16 19:32:20 · 472 阅读 · 0 评论 -
[BZOJ3505][Cqoi2014]数三角形(组合数学+gcd)
题目描述传送门题解三角形数=随便选出3个点-3点共线的 总数就是C3n∗mC_{n*m}^3 首先减去在横竖直线上的3点共线的 然后n*m枚举一条斜线,这条斜线经过的整点就是(i,j)-1,所以斜线上有(i,j)-1中选择 将这条直线左右平移n-i,上下平移m-j都是合法的,所以总的选择应该是((i,j)-1) * (n-i)*(m-j) 向左倾斜和向右倾斜有两种情况,再*2代码#incl原创 2017-01-16 18:23:43 · 576 阅读 · 0 评论 -
[BZOJ2982]combination(组合数学lucas定理)
题目描述传送门题解lucas定理裸题。代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define Mod 10007int T,n,m,ans;int mul[Mod+1];void calc(){ mul[原创 2017-01-28 19:01:47 · 741 阅读 · 0 评论 -
[BZOJ3907]网格(卡特兰数+组合数学+高精度)
题目描述传送门题解这道题和买票找零问题是差不多一样的 计算的时候需要高精度 分解质因数之后只需要一个高精乘单精和一个高精减就可以了代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 10000int n,原创 2017-01-29 17:51:05 · 842 阅读 · 0 评论 -
中国剩余定理与扩展 Lucas定理与扩展 学习笔记
中国剩余定理问题求同余方程组 ⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪x≡c1(modm1)x≡c2(modm2)x≡c3(modm3)...x≡ck(modmk){x≡c1(modm1)x≡c2(modm2)x≡c3(modm3)...x≡ck(modmk)\left\{ \begin{array}{c}x\equiv c_1\pmod {m_1}\\ x\equiv c_2\pmo...原创 2017-01-16 09:29:51 · 10758 阅读 · 14 评论