令人自闭的组合数学复习

发布时间 2023-08-16 11:02:35作者: 铃狐sama

组合数学练习复习

个人感觉:不看题解没思路,看了题解不知所云,亲自推柿子wa上加wa,平均1道题看题解要做1.5h……

排列组合

  1. 首先,你需要会打线性筛逆元(基础)。
    代码如下:

void init(int N){
	inv[1]=1;
	fac[0]=1;
	invfac[0]=1;
	for(int i=2;i<=N;i++){
		inv[i]=(mod-mod/i)*(inv[mod%i]%mod);	
		inv[i]%=mod;
	}
	for(int i=1;i<=N;i++){
		fac[i]=fac[i-1]*(i%mod);
		fac[i]%=mod;
		invfac[i]=invfac[i-1]*inv[i]%mod;
		invfac[i]%=mod;
	}
}

  1. 其次,你需要记住简化排列组合的这些定理
    二项式定理
    一般组合数化简
    插板放球法
    这些都可以在我排列组合博客中见到

  2. 最后,你需要知道做这一类题的常用方法:
    a. 抽象意义法,如将题目看成放球问题等等(Binomial Coefficient is Fun)。
    b. 答案入手法,如题目告诉你答案该怎么计算时,常使用上面的定理化简然后求解(交错序列)。

容斥原理

首先这个东西在开始做题时是不可能想到的,一般涉及dp时才会用到。
然后呢,设计dp又非常困难,因为你要用容斥原理的话,一般会有两个方程式
关键在于重复的分析,这个十分难搞。
说实话,我个人感觉如果真的涉及到容斥原理的话,我干脆放弃把时间留给其他题目,数论也一样。
除非是很简单的板题......