![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
组合数学
单木
无脑程序猿
展开
-
polay计数
polay计数原创 2016-07-20 20:06:16 · 314 阅读 · 0 评论 -
hdu 5795 A Simple Nim
题意n堆糖果,每人可以从一堆中取任意多个(大于0)或者把一堆分成三堆,所以sg(0)=0, sg(1)=1, sg(2)=2, sg(3)=3 。 。 。 sg(7)=8; sg(8)=7; sg(9)=9; 。 。 。 sg(8k+1)=8k+1, sg(8k+2)=8k+2, . . . sg(8k+7)=8k+8, sg(8k+8)=8k+7,原创 2016-08-05 11:25:44 · 179 阅读 · 0 评论 -
组合数的几种求法
Cmn%pC_n^m\%p 1. 0≤m≤n≤10000\leq m\leq n\leq 1000,1≤p≤1e91\leq p \leq 1e9,直接求void Com(int n,int p){ C[0][0]=1; for(int i=1;i<=1000;++i){ for(int j=0;j<=i;++i){ if(j==0||j==原创 2016-08-08 11:11:45 · 990 阅读 · 0 评论 -
骨牌覆盖
http://mzorro.me/2015/05/04/domino-coverage-problems/原创 2016-08-12 11:45:42 · 334 阅读 · 0 评论 -
求n!,C(n,m)和A(n,m)最后的非零位
求n!,C(n,m),A(n,m)最后的非零位。先说说怎样求n!最后的非零位吧! 比如找10!最后的非零位,由于质因数2和5的组合之后末尾会产生0,所以我们先把2,5的质因子全部去掉,由于2的数目要比5多,所以我们要在最后考虑 多余的2对末尾的影响。 比如:1*2*3*4*5*6*7*8*9*10去掉2,5的因子后就是: 1*1*3*1*1*3*7*1*9*1,由于去掉了2,5,那么剩下的数转载 2016-09-04 17:03:45 · 300 阅读 · 0 评论 -
hysbz1008 越狱(组合数学)
题意监狱有连续编号为1…N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱,对结果取模思路考虑没有犯人信仰相同,情况数为m∗(m−1)n−1m*(m-1)^{n-1}。原创 2016-11-05 19:22:04 · 229 阅读 · 0 评论 -
把n个物品分成m堆
把n个相同物品分成m个相同的堆,可空把n个相同物品分成m个相同的堆,不空S(n,m)=S(n−1,m−1)+S(n−m,m)S(n,m) = S(n-1,m-1) + S(n-m,m)把n个相同物品分成m个不同的堆,可空Cm−1n+m−1C_{n+m-1}^{m-1}把n个相同物品分成m个不同的堆,不空Cm−1n−1C_{n-1}^{m-1}把n个不同物品分成m个相同的堆,可空把n个不同物品分成m个原创 2016-11-26 10:17:56 · 10697 阅读 · 2 评论 -
斯特灵数
置换轮换置换的轮换表示原创 2016-07-20 20:01:18 · 228 阅读 · 0 评论 -
容斥原理
//递归写法LL sum;void dfs(int i,int nu,int x,int mu,LL b){ //printf("%d %d %d %d %lld\n",i,nu,x,mu,b); if(nu==x){ sum+=b/mu; return; } if(i==tmpCnt) return; dfs(i+1,nu+1,x,mu*tmpPrime[i],b);原创 2016-04-19 09:18:35 · 311 阅读 · 0 评论 -
错排公式
我们都知道,错排公式的递推式为:Dn=(n−1)(Dn−1+Dn−2)D_n=(n-1)(D_{n-1}+D_{n-2}),其中D1=0,D2=2,而进一步可以得到:原创 2016-07-30 10:45:02 · 286 阅读 · 0 评论 -
鸽巢原理
简单形式: 如果n+1个物体被放进n个盒子,那么至少有一个盒子包含两个或更多的物体。加强形式: 令q1,q2,…qn为正整数。如果将q1+q2+…+qn-n+1个物体放入n个盒子内,那么或者第一个盒子至少含有q1个物体,或者第二个盒子至少含有q2个物体,…,或者第n个盒子含有qn个物体.应用: 在一个长度为n的序列a,存在子序列的和能被能整除。 中国剩余定理的存在性证明。原创 2016-04-27 10:25:36 · 551 阅读 · 0 评论 -
catalan数
1.h(n)=h(n-1)*(4*n-2)/(n+1);2.h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2);3.h(n)=C(2n,n)/(n+1) (n=0,1,2,...);4.h(n)=c(2n,n)-c(2n,n-1)(n=0,1,2,...)原创 2016-04-24 21:51:43 · 220 阅读 · 0 评论 -
巴什博弈
巴什博弈:只有一堆n个物品,两人轮流从这堆物品中取物,规定每次至少取一个,最多取m个,最后取光着获胜。 结论:若(m+1)∣n(m+1)\mid n 则先手必败,否则先手必胜原创 2016-07-05 19:44:07 · 200 阅读 · 0 评论 -
hdu 1536 S-Nim
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1536题目大意输入K表示一个集合的大小,之后输入集合表示对于这对石子只能去这个集合中的元素的个数。输入一个m表示接下来对于这个集合要进行m次询问。接下来m行 每行输入一个n,表示有n个堆,每堆有ni个石子,问这一行所表示的状态是赢还是输 如果赢输出W否则L结题思路自己做的一直超时,后来看别人的,对能原创 2016-07-24 10:41:09 · 272 阅读 · 0 评论 -
SG函数
简述想要学好博弈论,不只是要了解巴什博奕、威佐夫博奕等等典型的博弈问题,这些都只是基础,而SG函数,是我们想要走向博弈大师必须掌握的知识,接下来的分析,可能枯燥无味,但是真正看懂之后,会受益匪浅。 分析现在我们来研究一个看上去似乎更为一般的游戏:给定一个有向无环图和一个起始顶点上的一枚棋子,两名选手交替的将这枚棋子沿有向边进行移动,无法移动者判 负。事实上,这个游戏可以认为是所有Impartial转载 2016-07-24 10:25:51 · 596 阅读 · 0 评论 -
Nim博弈
简述通常的Nim游戏的定义是这样的:有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此刻没有任何合法的移动)。分析这游戏看上去有点复杂,先从简单情况开始研究吧。如果轮到你的时候,只剩下一堆石子,那么此时的必胜策略肯定是把这堆石子全部拿完一颗也不给对手剩,然后对手就输了。如果剩下两堆不相等的石子,必转载 2016-07-24 10:21:26 · 249 阅读 · 0 评论 -
生成函数入门-普通型生成函数
这篇博客对很适合初学者入门,讲解清晰容易,后续会把格式修改下使她更美观,一篇格式清晰美观的博客对一些复杂知识的理解很重要,所以建议看原博客这是传送门 瑞兹放大招.jpg母函数(Generating function)详解 — TankyWoo— Tanky Woo在数学中,某个序列的母函数(Generating function,又称生成函数)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信转载 2016-07-20 20:04:40 · 1960 阅读 · 0 评论 -
catalan数
1.h(n)=h(n-1)*(4*n-2)/(n+1); 2.h(n)= h(0)*h(n-1)+h(1)*h(n-2) + … + h(n-1)h(0) (n>=2); 3.h(n)=C(2n,n)/(n+1) (n=0,1,2,…); 4.h(n)=c(2n,n)-c(2n,n-1)(n=0,1,2,…)模板#include <iostream>#include <stdio.h>#原创 2016-07-30 09:27:05 · 193 阅读 · 0 评论 -
威佐夫博弈
威佐夫博弈(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。 这种情况下是颇为复杂的。我们用(ak,bk)(ak ≤ bk ,k=0,1,2,…,n)表示两堆物品的数量并称其为局势。如果局势对当前人,在两人都采用呢最优的策略的情况下必败,则称为奇异局势。前几个奇异局势是:(0,0)、(1,2)、(3,5)原创 2016-07-05 19:52:10 · 248 阅读 · 0 评论