WC集训DAY2笔记 组合计数 part.1

补完了几天前写的东西

WC集训DAY2笔记 组合计数 part.1

今天开 幕 雷 击:PKUWC没过

UPD:THUWC也没过,听说群友380过了,也是高一,我378...,WC集训完可以愉快地vanyousee了(呜呜呜

UPD2:由于我在弱校,是高中rk1(黄神MLE了...),苟进了NOIWC

写笔记,就是记结论的意思

基础知识

组合恒等式

  1. \[2^n = (1+1)^n=\sum_{i=0}^n C(n,i)*1*1=\sum_{i=0}^n C(n,i) \]

  2. \[\sum_{i=m}^{n}\left(\begin{array}{c}{i} \\ {m}\end{array}\right)=\left(\begin{array}{c}{n+1} \\ {m+1}\end{array}\right) \]

  3. \[\left(\begin{array}{c}{n} \\ {m}\end{array}\right)\left(\begin{array}{c}{m} \\ {k}\end{array}\right)=\left(\begin{array}{c}{n} \\ {k}\end{array}\right)\left(\begin{array}{c}{n-k} \\ {m-k}\end{array}\right) \]

    考虑左边选两次,右边直接选

  4. \[\sum_{i=0}^{k}\left(\begin{array}{c}{n} \\ {i}\end{array}\right)\left(\begin{array}{c}{m} \\ {k-i}\end{array}\right)=\left(\begin{array}{c}{n+m} \\ {k}\end{array}\right) \]

    考虑n个放左边,m个放右边

错排数

递推:

\(D_n=(n-1)(D_{n-1}+D_{n-2})\)

通项:加一个\(i!\),推出来是\(D_n=n!\sum_{i=0}^n(-1)^i\frac{1}{i!}\)

或者直接容斥/二项式反演

简化式:n!除以e+0.5向下取整

考虑\(\frac{1}{e}\)的泰勒展开

卡特兰数

括号序列方案数

递推式:\(C_n=\sum_{i=0}^{n-1}C_iC_{n-i-1}\)

通项式\(C_n=(2n,n)-(2n,n+1)=\frac{1}{n+1}(2n,n)\)

斯特林数

要求集合/圆排列非空

第一类斯特林数

n个人m个圆排列方案数

考虑组合意义,单独开一个圆排列则有S1(n-1,m-1),放进去则有n-1个位置可以放,(n-1)S1(n-1,m)

\[\left[\begin{array}{l}{n} \\ {m}\end{array}\right]=\left[\begin{array}{l}{n-1} \\ {m-1}\end{array}\right]+(n-1)\left[\begin{array}{c}{n-1} \\ {m}\end{array}\right] \]

第二类斯特林数

m个集合方案数

递推式

\[\left\{\begin{array}{l}{n} \\ {m}\end{array}\right\}=\left\{\begin{array}{l}{n-1} \\ {m-1}\end{array}\right\}+m\left\{\begin{array}{c}{n-1} \\ {m}\end{array}\right\} \]

O(nm)求一个矩阵

通项式

容斥,考虑至少k个集合是空的

\(\left\{\begin{array}{l}{n} \\ {m}\end{array}\right\}=\sum_{k=0}^{m}(-1)^{k}\left(\begin{array}{l}{m} \\ {k}\end{array}\right)(m-k)^{n}\)

求单独一个的复杂度O(n)

可以NTT,mlogm求一行

求自然数幂之和

\[S_k(n)=\sum_{i=0}^n i^k \]

考虑SK(n)是关于n的k+1次多项式(归纳证明)

那么用拉格朗日插值可以\(O(k)\)

后面讲的用斯特林数求啊,伯努利数求啊都不会。。。

于是愉快地掉线了(\(\times 1\)

与上升幂/下降幂关系

\[n^{m}=\sum_{k=0}^{m}\left\{\begin{array}{l}{m} \\ {k}\end{array}\right\} C_{n}^{k} k !=\sum_{k=0}^{m}\left\{\begin{array}{l}{m} \\ {k}\end{array}\right\} n^{\underline{k}} \]

\[x^{\bar{n}}=\sum_{k}\left[\begin{array}{l}{n} \\ {k}\end{array}\right] x^{k} \]

前一个就是组合意义,后一个要数学归纳证,所以可以分治NTTnlog^2求S1

斯特林反演

要证两个引理。。。

证明听懂了一半,然后看 这位 大佬博客看懂了

总之结论就是

\[\begin{array}{l}{\sum_{k=m}^{n}(-1)^{n-k}\left[\begin{array}{l}{n} \\ {k}\end{array}\right]\left\{\begin{array}{l}{k} \\ {m}\end{array}\right\}=[m=n]} \\ {\sum_{k=m}^{n}(-1)^{n-k}\left\{\begin{array}{l}{n} \\ {k}\end{array}\right\}\left[\begin{array}{l}{k} \\ {m}\end{array}\right]=[m=n]}\end{array} \]

\[f(n)=\sum_{k=0}^{n}\left\{\begin{array}{l}{n} \\ {k}\end{array}\right\} g(k) \Longleftrightarrow g(n)=\sum_{k=0}^{n}(-1)^{n-k}\left[\begin{array}{l}{n} \\ {k}\end{array}\right] f(k) \]

伯努利数

掉线了。。。(\(\times 2\)

inf年后补吧

贝尔数

分成若干个非空无序集合的方案数

\(B_n=\sum_{k=0}^nS2(n,k)\)

\(B_{n+1}=\sum_{k=0}^n(n,k)B_k\)

好像还挺显然的?

调和级数

\(H_n=\sum_{i=1}^n \frac{1}{i}=ln_n+欧拉常数+\frac{1}{2n}\)

(那两个符号不会打。。。)

用于复杂度分析

后记

part2是高数(各种啥啥啥中值定理,洛必达)和生成函数和多项式神奇操作,自闭中。。。。

part3是置换群和高斯消元的骚操作

posted @ 2019-12-20 17:33  lcyfrog  阅读(300)  评论(0编辑  收藏  举报