组合数学
文章平均质量分 70
路人丙丙
这个作者很懒,什么都没留下…
展开
-
hdu3037 组合数 lucas定理
传送门题意:n个树保存不超过m个豆子的所有方法。思路:首先题目转化成x1+x2+x3+......+xn=a,其中的a由0-m中取,这个不定方程的解的个数由插板法得到,由于x1到xn可以取到0,为了方便计算,方程写为(1+x1)+(1+x2)+(1+x3)+......+(1+xn)=a+n,总共a+n-1个空,要插n-1个板子,分成n组所以结果便是C(a+n-1,n-1)=C原创 2017-07-31 19:53:49 · 238 阅读 · 0 评论 -
HDU 5119 Happy Matt Friends(母函数)
转载地址Happy Matt FriendsTime Limit: 6000/6000 MS (Java/Others) Memory Limit: 510000/510000 K (Java/Others) Total Submission(s): 4907 Accepted Submission(s): 1859Problem Description Matt has N friends. T转载 2018-01-17 20:45:48 · 217 阅读 · 0 评论 -
hdu4810 Wall Painting 二进制组合数学
传送门题意:给定n个数,分别求从这n个数中取1-n个数的异或的和思路:把这n个数都分别用二进制表示,然后统计每一位中1的个数,因为是异或,所以只有奇数个1才能得到这一位是1,把从n个数中选几个数转化成从一定数量的1和0中选择,比如:51 6 8 10 2 这组例子0 0 0 10 1 1 01 0 0 01 0 1 00 0 1 0———2 1 3 1原创 2017-11-26 19:27:58 · 196 阅读 · 0 评论 -
BZOJ 1951 lucas定理 中国剩余定理
传送门照旧记录一下,不然担心以后碰到类似的题依旧不知道怎么做……题意:求G^(sigma(C(N,i)))%MOD,MOD=999911659,i是N的因子(包括1和本身),首先幂次非常大,所以先降幂次,即sigma(C(N,i))%(MOD-1)+(MOD-1),那么关键就是求sigma(C(N,i))%(MOD-1),我们可以遍历能整除N的数,但999911658是一个合数,它可以分解原创 2017-08-05 20:28:13 · 349 阅读 · 0 评论 -
hdu4373 lucas定理+中国剩余定理
传送门想做好这个题真的真的好不容易啊T T题意:定义两种循环,第一种循环是直接从1-n,第二种循环是从上一层循环的数字到n,给出两种类型的循环,求最后总循环次数,再对364875103取模思路:计算循环次数,第一种循环就不用说了,第二种循环是通过找规律归纳出来结果……第二种循环的开始一定是第一种循环,若是第一种循环里只有一个第二种循环即for(a[0]=0;a[0]原创 2017-08-05 11:02:17 · 337 阅读 · 0 评论 -
zoj3557 大组合数取模
传送门题意:从n个数中取m个不相邻的数的取法思路:取不相邻的数,这不就是传统的插空法吗,不是插板法,不是插板法,不是插板法!先从n中任意选择m个数,然后在剩下的n-m个数中插空来保证不相邻,而插板法一般是相同元素分组,不相邻的问题一般都用插空法做(高中数学都要还给老师了 T T),所以最后的结果是C(n-m+1,m)再对一个素数取模,n、p比较大,用lucas定理即可完整代码:#i原创 2017-08-04 11:22:12 · 247 阅读 · 0 评论 -
hdu3944 lucas定理+阶乘预处理
传送门题意: 给出两个值n、m,求从杨辉三角上从上到下,只能向下或向右下,到位置(n,m)的和的最小值思路: 画出杨辉三角很容易就可以发现,我们逆着看,若m端,若m>n/2,则最小和在这个数一直向上到最上时再左上到最顶端,由于组合数的性质C(n,m)=C(n,n-m),所以我们只看m>n/2的时候,那么sum=C(n,m)+C(n-1,m)+C(n-2,m)..+C(m,m)+原创 2017-08-03 20:09:31 · 372 阅读 · 0 评论 -
nefu628 组合数取模,模不是素数的情况
传送门题意:求C(m+n-2,m-1)%p,其中1思路:数据范围并不是很大,但关键是p不一定是素数,所以传统求逆元的方法如费马小定理或者扩展欧几里得都不适用了,C(m+n-2,m-1)=(m+n-2)!/((n-1)!*(m-1)!),可以把这个数暴力分解素因子,计算其中包含的素因子个数,然后再用快速幂计算,累乘就得到了最后的结果。十分暴力。#include#include#inc原创 2017-08-03 15:55:28 · 1142 阅读 · 0 评论 -
poj3370 抽屉原理
传送门抽屉原理的题目,对每个数求前缀和,那么总共有n个前缀和,再分别对c取余,若某个前缀和为0,那么这前几个数便是符合题目的答案,如果没有0,由于c至少有两个前缀和取余后相等,那么这两个数之间的数便符合题意,代码O(n)复杂度#include #include #include using namespace std;typedef long long ll;int da原创 2017-08-02 10:56:15 · 392 阅读 · 0 评论 -
n个相同的球放进k个不同的盒子中方案数
……不知道为啥这个高中学过的知识,每次提起来都得认真的重新想一遍,所以记录下…………可以看做n+k个球放到k个盒子中,每个盒子都至少一个球,所以隔板法……C(k-1,n+k-1)...原创 2018-03-31 19:53:21 · 8709 阅读 · 2 评论