[关闭]
@happyforever 2018-06-10T13:49:52.000000Z 字数 8125 阅读 797

计数相关

清北学堂 计数


上午

推荐图书:《具体数学》《组合数学》(Richard著)
推荐网站:搜索排列

核心:不重不漏

5男人6女人2男孩4女孩选1男人1女人1男孩1女孩的方案:

0~9的排列数:
首位不为0的话:

乘法原理:对于某个问题,有很多相互独立子问题,将每个子问题的方案数乘起来是原来问题的答案
加法原理:对于某个问题,不能划分成互不独立的子问题,满足加法原理

若有理数是无限小数,则必然是无限循环小数
证明:
考虑鸽笼原理
注意到做竖式除法的时候
写成,而后在m下面写出的数一定是0 ~ n-1中的某个数字
因为是无限小数,所以会写无限多个0~n-1中的某个数字,所以一定会重复


组合数基本

加法原理
乘法原理
鸽笼原理(抽屉原理):有n个笼子,n+1只鸽子,那么至少一个笼子里面有两只或更多鸽子
在图论中的拓展:Ramsey定理

排列

n个元素的集合,写成一个序列的方法有
乘法原理应用

定义:0!=1

圆(环)排列:


因为可以在任意位置断开,形成一个在链上的排列
圆排列

错位排列:

1~n,第个人站在第的位置上,其中

考虑将这个问题分成很多步,查看分出来的每一步是否等价于当前问题
那么只有在n个人的时候才会考虑第n个人的操作方法
那么n可以站在n-1个位置上,所以有n-1的贡献
所以可以考虑n-1个人中有某个人站在了第n个位置,也就是
再考虑有n-1个人,但是只有n-2个位置(其中一个被n占了,并且第i个人不能站在第n个位置上),此时等价于第i个人不能站在第i号位置上,也就是的情况
即分了两种情况:
第n个人站在第i个位置,并且第i个人站在第n个位置上,此时等价于
第n个人站在第i个位置,并且第i个人没有站在第n个位置上,此时等价于

同时考虑n只能站在1~n-1的位置上,即有(n-1)的贡献
所以得出上述公式
图

多重集的全排列

多重集:元素可以重复的集合

假定某个多重集中有个元素,,
首先将其中的相同的元素看成不同的元素
那么排列种数为
再把其中重复的算出来
最后答案为

组合数

一个大小为的集合,选出个元素的方案数,也记作

隔板法

个相同的求,放到个不同的盒子里
表示第i个盒子里球的数量
那么问题转化
解方程
1.每个盒子里至少有一个球
即规定
图
隔板法,改变分界点的位置
最前面跟最后面必须有
n-1个空,m-1个板

2.盒子可以为空
即规定
可以认为是n+m个球即n+m-1个空,m-1个隔板

3.每个盒子至少两个球
即规定
可以认为是n-m个球即n-m-1个空,m-1个隔板

捆绑法

n名男生,m名女生,2名老师排成一行,老师和老师不能相邻,女生和女生不能相邻

此处输入图片的描述[1]
老师可以相邻数量-把两个老师捆绑起来的数量[2]

二项式定理

卡特兰数



对应的n个问题:
例子:
1.有,每个前缀和都的方案数
2.个左括号,个右括号,合法的括号序列数
(左括号看做+1,右括号看做-1)
3.个节点构成的二叉树数量
4.进栈次序是的出栈排列数
(把进栈看做+1,出栈看做-1)
5.正边行的三角剖分数量

组合数的计算

的值,其中:
1.
利用组合数递推,直接就能做
2.
①p为质数
求出逆元之后直接暴力求
②p不是质数

将p质因数分解,,单独考虑每个
,如果我们可以求出来每一部分的值,最后就可以用中国剩余定理合并起来

3.且p为素数
Lucas定理

的逆元
4.
做法1:分解质因数
int f(int n)
{return n?n/p+f(n/p):0;}

  1. #include<cstdio>
  2. using namespace std;
  3. int n=2333576;
  4. int p=23;
  5. int count(int n){
  6. if(n>0){
  7. return n/p+count(n/p);
  8. }
  9. return 0;
  10. }
  11. int count_baoli(int n){
  12. int cnt = 0;
  13. for(int i=1;i<=n;i++){
  14. int t=i;
  15. while(t%p == 0) cnt++,t/=p;
  16. }
  17. return cnt;
  18. }
  19. int count2(int n){
  20. if(n>0){
  21. int s = 1;
  22. if(n/p>0 && ((n/p) & 1)) s = s *(p-1)%pow(p,k) ; // p^k
  23. s = s*count2(n/p)%pow(p,k); // p^k
  24. n%=p;
  25. for(int i=1;i<=n;i++){
  26. s = s*i%pow(p,k); // p^k
  27. }
  28. return s;
  29. }
  30. return 1;
  31. }
  32. int count2_baoli(int n){
  33. int s = 1;
  34. for(int i=1;i<=n;i++){
  35. int t=i;
  36. while(t%p == 0) t/=p;
  37. s=s*t%p;
  38. }
  39. return s;
  40. }
  41. int main(){
  42. printf("%d %d\n",count(n),count_baoli(n));
  43. printf("%d %d\n",count2(n),count2_baoli(n));
  44. return 0;
  45. }

做法2:
和第二个题思路一样
把p唯一分解
然后用中国剩余定理解决


第二类斯特灵数


n个数的集合的划分为k个非空集合方法的数目(n个不同的小球放到m个相同的盒子,每个盒子至少放一个球的种数)

把n个不同的小球分到k个可区分的盒子里面且没有空盒子的划分个数:

第一类斯特灵数


将n个不同元素排成k个非空环排列的方法数


下午

整数划分问题

给两个整数
问:
1.将划分成若干正整数之和的划分数

2.将划分成个正整数之和的划分数

3.将划分成最大数不超过的划分数

4.将划分成若干奇正整数之和的划分数
5.将划分成若干不同整数之和的划分数
以上5个问题中,


Burnside&Polya

群论

群:给定一个集合,和集合上的二元运算,并满足:
(1)封闭性:
(2)结合律:
(3)单位元:
(4)逆元:
则称集合在运算之下是一个群,简称是群,一般简写成.可以是任意运算,如果是具体的乘法,则称为乘法群,如果是具体的加法,则称其为加法群。若群中的元素是有限的,则称为有限群,否则称为无限群。有限群中元素的个数称为有限群的阶

.

置换:个元素之间的一个置换

表示中的某个数取代,中的某个数取代,,直到中的某个数取代,且,互不相同

置换群:
置换群的元素是置换,运算是置换的连接。例如:

由此可以验证置换群满足群的4个条件

Burnside引理

的置换群,中满足在作用下着色不变的着色集大小

Polya定理

为上面的Burnside引理中的的计算提供了一种计算方法
假设表示置换的循环个数
Polya定理告诉我们(一共种颜色)


生成函数系列

泰勒展开

(在某个点附近)把一个函数展开成一个无限的多项式

(已经学过)的泰勒展开:等比求和

对于泰勒展开的收敛性,并不关心

广义牛顿二项式定理


其中
其中对于分数,负数都对
[3]

形式幂级数

对于一个序列,可以定义一个多项式
这个叫做原序列的生成函数,是一个形式幂级数。(因为我们不太关心收敛)




生成函数的运算

生成函数整体可以做多项式运算(无论用封闭形式还是用多项式形式)
生成函数的乘法相当于做两个集合的组合

微分、积分:形式推导
解递推式
(比如斐波那契数列)
还有FFT……


Catalan数通项公式推导



Then,


Therefore,


Then,



例题:
求这样的位数个数:数字的各个数字都是奇数,而且必须出现偶数次

解法:
递推考虑位数的结尾
为这样的位数,每个数的各位数字都是奇数,且出现偶数次
为这样的位数,每个数的各位数字都是奇数,且出现奇数次,出现偶数次(由对称性,也可表示出现奇数次,出现偶数次)
为这样的位数,每个数的各位数字都是奇数,且出现奇数次
则有:

但是这个式子不对,因为还要考虑出现次的情况

现在需要减去没有同时出现的,需要减去没出现、出现偶数次,减去没出现、出现偶数次(由对称性与前一项相等),加上没出现、没出现的数量。
没出现、出现偶数次(没出现、出现偶数次)的数量为
没出现、没出现的数量为


加速递推

矩阵乘法
求解递推式(特征值、生成函数)


直接指数生成型函数


对于序列,定义生成函数
这样的对应
生成函数的乘法表示了两个集合的排列


积性函数

若在的情况下,则称函数为积性函数
若在任意情况下函数都满足,则称函数为完全积性函数

莫比乌斯反演讲解推荐ppt:PoPoQQQ《莫比乌斯反演》


狄利克雷卷积是一种对整数数论函数用约数关系进行的特殊的卷积。


如果均为积性,那么也均为积性

几个重要等式:

其中

.

其中最后一行的表示狄利克雷卷积
.

莫比乌斯反演


两边同乘


从第一个式子到第三个式子也叫莫比乌斯反演

.

某经典式子:

例题:zap
对于给定的,有多少正整数对,满足并且
等价于互质的的对数

解:

例题2:
与n互素的数的和


[1] 其实我觉得换个动词比较好,各种意义上
[2] 还有这个动词
[3] 所以这东西的主要用处就是he
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注