历时九天,组合数学快要结束了,写篇博客总结一下
emmm......众所周知,数学一直是我的一个薄弱i项,这次也算是一个很好的锻炼
先列一下这次都用了哪些知识点
1.组合数(废话)
2.逆元
3.卢卡斯定理
4.数据结构(数状数组/线段树)
5.高精
6.暴力打表,瞎猜规律
先来几道水题
A.排队
这题一度让我体会到高精的恐惧
式子很简单:(n+2)!*A(n+3,m)-(n+1)!*2*A(n+2,m)
B.perm排列计数
只要把题中的pi>pi/2转化成pi<pi<<1,pi<pi<<1|1就好了,二叉树上简单的树形dp,需要用到卢卡斯
式子:dp[i]=dp[i<<1]*dp[i<<1|1]*C(size[i]-1,size[i<<1])
C.地精部落
这题网上有许多解法,这里只介绍组合数解法
其实和perm的dp差不多,我们可以发现对于k个数来说每个数是多少没有影响,而每加一个数只能成为山峰
式子:dp[i][(i-j-1)&1]=∑dp[i][(i-j-1)&1]+1ll*dp[j][1]*dp[i-j-1][(i-j-1)&1]*C[i-1][j];
组合数直接杨辉三角就好了
接下来高能预警
D.集合计数
一道卡了好久的题
直接计算不好解,我们考虑容斥
以C(n,k)*2^2^(n-k)为全集
减去C(n,k+1)*2^2^(i-k-1)×C(k+1,k)
加上