—-感觉自己现在身为一个OIer,却陷入数学之中无法自拔
基本计数方法
1.排列组合
C(n,m)=n*(n-1)(n-2)…*(n-m+1)/m! –组合
P(n,m)=n!/(m-1)! –排列
区别排列与组合的标志是“有序”与“无序”
c(n,m)以及其重要的性质在组合计数中有着极其重要的作用
(1)c(n,0)=c(n,n)=1
(2)c(n,m)=c(n,n-m)
(3)c(n,m)+c(n,m+1)=c(n+1,m+1)
(4)c(n,m+1)=c(n,m)*(n-k)/(k+1)
证明:n+1个数当中选m+1个数可以看作两种情况,要么选了第一个数,则变成了n个数中选m个数即c(n,m);要么不选第一个数,则变成了n个数中选m+1个数。而这两类选法是不重复不遗漏的,所以根据加法原理推出公式(在排列组合里,类似的解题思路好像很普遍)
二项式定理
顺便写一下关于求和符号的知识:
(Σ,sigma)其中i=0是下标,n是上标
例题描述:根据二项式定理算出(a+b)^n的各项系数。
(1)最简单的思路当然是依次求出各个
c(n,i),但数据范围太大,因为要牵涉到阶乘,这种方法时间炸爽(- - -评测机:mmp)
(2)由第四种性质从c(n,0)开始递推,只需要O(n)的时间复杂度就可以轻松解决(代码还比暴力法好写)。不过一定要注意乘法溢出的问题
2.容斥定理
A∪B∪C=A+B+C-A∩B-B∩C-C∩A+A∩B∩C
这类问题都重在理解本质,做题时可以从最基本的情况开始推导。