2018.6清北学堂day5上午(计数)

推荐的书和网站

具体数学
组合数学 richard
oeis.org


Sample

1.用数字 09 0 − 9 每个恰好一次共能产生多少个排列
10! 10 ! ,那如果首位不为0呢? 10!9! 10 ! − 9 !

2.一个小tip若有理数 mn m n 是无限小数,则必然是无限循环小数

3.字母 af a − f 按顺序入栈,但随时可以出栈,形成的出栈序列有132种(卡特兰数

4.将2*2的网格黑白染色,旋转不同构的染色方案有6种

组合数相关

加法原理

乘法原理

鸽笼原理(抽屉原理)
(图论上的应用) Ramsey R a m s e y 定理

排列
n个元素的集合,写成一个序列的方式有 A(n)=n! A ( n ) = n ! P(n)=n! P ( n ) = n !

需要注意的是

0!=1 0 ! = 1

如果是排成一个环

就是 n!n=(n1)! n ! n = ( n − 1 ) !
因为,对于原来的每一种排列,都能找到另外的 n1 n − 1 个排列,与它在排成环的情况下相等

错排

f[i]=(n1)(f[i1]+f[i2] f [ i ] = ( n − 1 ) ∗ ( f [ i − 1 ] + f [ i − 2 ]

我们考虑第n个人如果放在第i个人的位置上,如果i放在n的位置上,那么剩下的情况就是 f[n2] f [ n − 2 ] ,如果i不在n的位置上,又相当于求了一个 f[n1] f [ n − 1 ] ,因为i有 n1 n − 1 种取值,所以就像上述的式子了

多重集的全排列

元素可以重复的集合的全排列

ans=n!n1!n2! a n s = n ! n 1 ! n 2 ! ⋯

组合数

(nm) ( n m ) = n!m!(nm)! n ! m ! ( n − m ) !

n个元素选m个的方案数

其中 (n0) ( n 0 ) =1

杨辉三角形可以用来算组合数

n个相同的球,放到m个不同的盒子里
1>每个盒子至少有一个球
隔板法
(n1m1) ( n − 1 m − 1 )

2>盒子可以为空
(n+m1m1) ( n + m − 1 m − 1 ) 相当于n+m个球,分到m组

3>至少两个球
我们考虑先把每个盒子填一个球,那么就变成了 nm n − m 个球,然后放的时候要求每个盒子至少有一个球就可以
(nm1m1) ( n − m − 1 m − 1 )

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

老师可以相邻的数量 - 把两个老师捆绑起来的数量

二项式定理

(a+b)n=i=0naibni(in) ( a + b ) n = ∑ i = 0 n a i b n − i ( i n )

组合数计算

1> n,m103,p109 n , m ≤ 10 3 , p ≤ 10 9
直接杨辉三角形
C[n][m]=C[n1][m1]+C[n1][m] C [ n ] [ m ] = C [ n − 1 ] [ m − 1 ] + C [ n − 1 ] [ m ]

2> n,m106,p109 n , m ≤ 10 6 , p ≤ 10 9
如果p能直接分解乘质数的一次方相乘,可以用CRT,也可以直接将 n! n ! 质因数分解

3> n,m1018,p103 n , m ≤ 10 18 , p ≤ 10 3
卢卡斯定理

4> n,m109,p105 n , m ≤ 10 9 , p ≤ 10 5
首先将p进行质因数分解,然后直接用CRT,或者,把p的质因子在A,B中去掉,然后求出A B去掉之后是多少,最后CRT合并

(p1)! mod p =p1 ( p − 1 ) !   m o d   p   = p − 1
这里介绍一种方法:求n!质因数分解后p^几次方
n/p+n/pp+n/ppp n / p + n / p ∗ p + n / p ∗ p ∗ p ⋯



tyvj 1298分苹果
n个有区别的苹果,分到3个无区别的袋子中的方案数

3n36+1 3 n − 3 6 + 1

3n 3 n 是指当成有区别的,除以6是因为实际上是无区别,-3是因为当只有一个袋子有苹果的时候,他的情况是3倍而不是6倍,不能直接处,所以先减掉,然后后来再加回来

斯特林数

二类:
n个不同的小球,放到k个相同的盒子,每个盒子至少放一个球的种数

f[n][k]=kf[n1][k]+f[n1][k1] f [ n ] [ k ] = k ∗ f [ n − 1 ] [ k ] + f [ n − 1 ] [ k − 1 ]

那如果k个盒子不同呢?
k!f[n][k] k ! ∗ f [ n ] [ k ] 即可

可以理解为k个盒子的编号有 k! k !

一类
将n个不同元素排成k个非空环排列的方法数:
g[n][k]=(n1)g[n1][k]+g[n1][k1] g [ n ] [ k ] = ( n − 1 ) ∗ g [ n − 1 ] [ k ] + g [ n − 1 ] [ k − 1 ]

Catalan数

1 1 2 5 14 42 132
C)n=(2nn)n+1=(2nn)(2nn1) C ) n = ( 2 n n ) n + 1 = ( 2 n n ) − ( 2 n n − 1 )

Cn+1=ni=0CiCni C n + 1 = ∑ i = 0 n C i C n − i

例子:

有n个 +1 + 1 ,n个 1 − 1 ,每个前缀和都 0的方案数。

n个左括号,n个右括号的合法序列
n n 个节点构成二叉树的数量

进栈次序是1,2,3n的出栈顺序

n+1边形的三角剖分数量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值