Skip to content

计数杂项

组合恒等式

推导组合恒等式的常见办法

  • 组合意义:一般更方便
  • 二项式定理:处理行的和
  • 利用已有恒等式推导

常见式子

基本定义

  • A(n,i)A(n,i)nn的下降幂
  • C(n,j)=A(n,j)A(j,j)=n!j!(nj)!C(n,j)=\frac{A(n,j)}{A(j,j)}=\frac{n!}{j!(n - j)!}

对称性

C(n,i)=C(n,ni)C(n,i)=C(n,n - i)

加法分解

  • C(n,i)=C(n1,i1)+C(n1,i)C(n,i)=C(n - 1,i - 1)+C(n - 1,i)
  • A(n,i)=A(n1,i)+i×A(n1,i1)A(n,i)=A(n - 1,i)+i\times A(n - 1,i - 1)
  • C(n,i)=j=i1n1C(j,i1)C(n,i)=\sum_{j = i - 1}^{n - 1} C(j,i - 1)

乘法转换

  • A(n,i)=A(n,j)×A(nj,ij)A(n,i)=A(n,j)\times A(n - j,i - j)
  • C(n,i)×A(i,j)=C(nj,ij)×A(n,j)C(n,i)\times A(i,j)=C(n - j,i - j)\times A(n,j)
  • C(n,i)×C(i,j)=C(n,j)×C(nj,ij)C(n,i)\times C(i,j)=C(n,j)\times C(n - j,i - j)

利用二项式定理巧妙赋值

  • C(n,\text{奇}) = C(n,\text{偶})
  • iC(n,i)=2n\sum_{i} C(n,i)=2^n

二项式反演

原理

f[n]=iC(i,n)×g[i]f[n]=\sum_{i} C(i,n)\times g[i],则g[n]=i(1)(in)×C(i,n)×f[i]g[n]=\sum_{i} (-1)^{(i - n)}\times C(i,n)\times f[i]

判断正确性的依据

“至少”是否满足和“恰好”的关系,满足就可以用

实现相关

法一

已经得到gg的情况下,可以利用卷积实现二项式反演。直接暴力卷积是平方的,利用nttntt是线性对数的。

法二(一般模数)

需要将答案式写出,进行进一步的推式子和优化。

kk维二项式反演

类比理解

高维前缀和与其逆变换

具体处理

对每一维分别做二项式反演即可

复杂度

k×k\times单次二项式反演复杂度

常见应用

  • (容斥)去掉一个条件
  • 处理恰好kk个的条件

斯特林数

以下记第二类斯特林数为SS

S(n,k)S(n,k)的组合意义

nn个不同的球恰分成kk组的方案数。其中,两个方案不同当且仅当存在两个球在其中一个方案中在同一个组中,在另一个方案中不在同一个组中。

  • nn个不同的球放进kk个不同盘子(允许放空)的方案数是knk^n
  • nn个不同的球放进kk个相同盘子(不允许放空)的方案数是S(n,k)S(n,k)

递推公式

S(n,k)=S(n1,k1)+S(n1,k)×kS(n,k)= S(n - 1,k - 1)+S(n - 1,k)\times k

proof:考虑S(n,k)S(n,k)的所有方案中第nn个球的情况,是否是自己一个组,证明双射即可。

通项公式

S(n,k)=i(1)(ki)×ink!×(ki)!S(n,k)=\sum_{i} (-1)^{(k - i)} \times \frac{i^n}{k! \times (k - i)!}

proof:发现无标号可放空是好算的,直接容斥即可。

普通幂转下降幂

kn=iA(k,i)×S(n,i)k^n=\sum_{i} A(k,i)\times S(n,i)

prufer序列

构造

每次选出编号最小的度数为11的节点,将其删去,并将其父节点加入序列。

性质

  • 序列和有标号有根树一一对应
  • ii的出现次数等于其度数减11
  • 构造时最终剩下的两个节点有一个是nn

重要推论

图中有kk个连通块,其大小分别为a[1k]a[1\sim k],添加k1k - 1条边将其连成一个连通图的方案数为nk2×(a[1]×a[2]××a[k])n^{k - 2} \times (a[1]\times a[2]\times\cdots\times a[k])

理性理解

  • 不妨先统计有根树的数量,最后除以nn即可。
  • pruferprufer序列改一下变成每次删的对应的具体连的父亲节点。
  • 然后再钦定一下删除当前块连给父亲的是哪个点,钦定最后一个删除块钦定的点就是根。
  • 那么发现这应该可以一一对应,就证完了。

生成函数简陋知识

  • 1(1x)k=iC(i+k1,k1)×xi\frac{1}{(1 - x)^k}=\sum_{i} C(i + k - 1,k - 1)\times x^i
  • xn1x=i=0n1xi\frac{x^n}{1 - x}=\sum_{i = 0}^{n - 1} x^i
  • ex=ixii!e^x=\sum_{i} \frac{x^i}{i!}
  • OGFOGFEGFEGF的卷积

Released under the MIT License.