随笔分类 -  数学——排列组合

摘要:http://codeforces.com/problemset/problem/630/I 简单的排列组合,推式子技巧:举一个小样例,看着推,别抽象着推,容易错 阅读全文
posted @ 2019-08-02 17:05 WeiAR 阅读(171) 评论(0) 推荐(0) 编辑
摘要:http://codeforces.com/problemset/problem/630/I 简单的排列组合,推式子技巧:举一个小样例,看着推,别抽象着推,容易错 阅读全文
posted @ 2019-08-02 17:04 WeiAR 阅读(115) 评论(0) 推荐(0) 编辑
摘要:2016年省赛 G Triple Nimnim游戏,要求开始局面为先手必败,也就是异或和为0。如果n为奇数,二进制下最后一位只有两种可能1,1,1和1,0,0,显然异或和为1,所以方案数为0如果n为偶数,举个例子,14,二进制为1110,我们按位来拆1110==1000+100+101000=100 阅读全文
posted @ 2019-04-30 11:23 WeiAR 阅读(167) 评论(0) 推荐(0) 编辑
摘要:HEX SDUT 3896 17年山东省赛D题这个题是从矩形的左下角走到右上角的方案数的变形题,看来我对以前做过的题理解还不是太深,或者是忘了。对于这种题目,直接分析它的性质就完事了。从(1,1)走到(a,b)向左走的步数和向右走的步数是确定的,向下是代表向左向右各走了一步。细节:利用对称性,线性推 阅读全文
posted @ 2019-04-25 17:24 WeiAR 阅读(127) 评论(0) 推荐(0) 编辑
摘要:hdu3944题目中给出的杨辉三角形的形状带有误导目的,应该转化成对称的形状再去思考这个问题分两种情况第一个是在左区从目标位置向左上方走一直走到边界,然后再向右上方一直走到起点n-k个1加上C(n-k,0)+C(n-k+1,1)+C(n-k+2,2)+...+C(n,k)C(n-k,0)+C(n-k 阅读全文
posted @ 2019-02-23 11:43 WeiAR 阅读(129) 评论(0) 推荐(0) 编辑
摘要:HDU6397用小于n的m个数组成k,求方案数mod 998244353如果没有n的限制,直接用隔板法求就可以因为m个数中可以为0,所以不妨先都放上一个1,转化成不能为0的m个数来凑k+m,即C(k+m-1,m-1);加了限制之后就用容斥原理去维护就好了至少有i个不小于n的方案数为C(m,i)*C( 阅读全文
posted @ 2019-02-22 17:51 WeiAR 阅读(195) 评论(0) 推荐(0) 编辑
摘要:容斥原理推导错排通项公式设Ai是第i个元素放在第i个位置上的排列数_Ai表示Ai的补集所以我们要求的就是-->如图 转化一下,它们其实是等价的 也就是 右边可以套容斥原理了A1 U ... U An=n!-C(n,1)*(n-1)!+C(n,2)*(n-2)!-...=n!*( sigema{2<= 阅读全文
posted @ 2019-02-18 15:48 WeiAR 阅读(747) 评论(0) 推荐(1) 编辑
摘要:重复排列的证明感觉就跟完全背包一样233333||||||||一个有n+1个用这样的墙来隔开一个一个的空,每个空里放*,第i个空代表第i个元素,*的个数代表第i个元素有重复的多少个,所以出去开头和末尾的两个墙,最后只有n-1+r个位置,从这些位置里选出r个,剩下的墙就从左往右按顺序插上就好了。 阅读全文
posted @ 2019-02-18 10:42 WeiAR 阅读(305) 评论(0) 推荐(0) 编辑
摘要:圆排列证明还是断环为链的思想,然后把链想象成队列,把队头移动到队尾,就会形成一个新的队列,但是连成环的话还是同一个环,这样最多移动k次,也就是有k个重复。 阅读全文
posted @ 2019-02-18 10:33 WeiAR 阅读(197) 评论(0) 推荐(0) 编辑
摘要:prev_permutation(a+1,a+n+1)产生上一个排列 阅读全文
posted @ 2017-11-05 07:30 WeiAR 阅读(155) 评论(0) 推荐(0) 编辑
摘要:P2817 宋荣子的城堡一道找规律的题,现在深入追究发现了有趣的东西。1 12 23 94 64显然k^(k-1) 在日照的时候也推出来了。3 9今天推错了,要列出所有的情况,然后再选,否则会漏掉。答案是(k^(k-1)) * ((n-k)^(n-k))对了,我卡速米一直打的是错的。要对指数为0的情 阅读全文
posted @ 2017-10-19 21:10 WeiAR 阅读(180) 评论(0) 推荐(0) 编辑
摘要:Lucas定理适用于大组合数取模。C(n,m)%p==lucas(n,m,p)==C(n%p,m%p)*lucas(n/p,m/p,p);然后递归调用即可,显然,C(n,0)%p=1;因为p是质数,这里套用费马小定理,a^(p-1)=1(mod p),a的逆元为a^(p-2),然后套快速幂,预处理阶 阅读全文
posted @ 2017-10-15 21:35 WeiAR 阅读(149) 评论(0) 推荐(0) 编辑
摘要:P3414 SAC#1 - 组合数 组合数的性质,求(1<<(n-1))%mod即可。其实要快速幂。 阅读全文
posted @ 2017-08-19 17:21 WeiAR 阅读(111) 评论(0) 推荐(0) 编辑
摘要:Catalan数 虽然早就听说了catalan数,但是并不真正理解,昨天做了一个出栈次序的题,学了一下,关于卡特兰数,有很多应用,目前我掌握(说是掌握,也是未必)是出栈次序问题,有n个数,h(n)=C2nn-C2nn-1, 到目前为止,出栈数一定要小于等于入栈数,不然没有进来怎么出去,也就是不合法的 阅读全文
posted @ 2017-08-19 08:58 WeiAR 阅读(277) 评论(2) 推荐(0) 编辑
摘要:Permutation 日照夏令营D2T2,赛场上40分,因为当时用的阶乘把康托展开算出来了,由于n很大,后6个点爆了。其实不用算,比如a是第x个排列,b是第y个排列,而想x、y能拆成rank数组,x+y实际上就是它们对应位上rank数组的值相加,因为最后要求的是排列,所以根本用不到阶乘。这里用的是 阅读全文
posted @ 2017-08-12 07:56 WeiAR 阅读(241) 评论(0) 推荐(0) 编辑
摘要:康托展开 简介:对于给定的一个排列,求它是第几个,比如54321是n=5时的第120个。(对于不是1~n的排列可以离散化理解) 做法: ans=a[n]*(n-1)!+a[n-1]*(n-2)!+~~~~a[1]*0!.(a[n]表示在给定的排列中,还没出现的,而且比当前值小的数的个数) 如果说对于 阅读全文
posted @ 2017-08-11 10:41 WeiAR 阅读(164) 评论(0) 推荐(0) 编辑