易忘记的知识点
一、二分图匹配
1.最大匹配
∣ M a t c h ∣ = ∣ X ∣ − m a x ( ∣ Y ∣ − ∣ N Y ∣ ) |Match| = |X| - max (|Y| - |N_Y|) ∣Match∣=∣X∣−max(∣Y∣−∣NY∣) ( N Y N_Y NY 表示右部的有边和左部点集 Y Y Y 相连的点的个数)
最小点覆盖输出方案。
最小/大字典序
想到建反图。 e . g . e.g. e.g. 「LibreOJ β Round #4」子集
2.
二、位运算
1.枚举真子集
枚举 i i i 的二进制真子集
for (int j = i; --j &= i; )
等价于
for (int j = i - 1 & i; j; j = j - 1 & i)
三、数学
1.组合数学
- F n m = C n + m − 1 m F_n^m = C_{n + m - 1}^{m} Fnm=Cn+m−1m : F:表示从m个数中选出n个数(可重复)组成的不同的数的个数。 S: 表示 n n n 个不同箱子放相同 m m m 个球(允许为空)。
- ( n k ) = ( − 1 ) k ( k − n − 1 k ) \binom{n}{k} = (-1)^k\binom{k - n - 1}{k} (kn)=(−1)k(kk−n−1)
- ( n r ) ( r k ) = ( n k ) ( n − k r − k ) \binom{n}{r} \binom{r}{k} = \binom{n}{k} \binom{n - k}{r - k} (rn)(kr)=(kn)(r−kn−k)
- Catalan 数: H n = ( 2 n n ) − ( 2 n n − 1 ) = ( 2 n n ) n + 1 H_n = \binom{2n}{n} - \binom{2n}{n - 1} = \frac{\binom{2n}{n}}{n + 1} Hn=(n2n)−(n−12n)=n+1(n2n)
- n n n 个点组成二叉树的方法数为 H n H_n Hn
- 错排公式 { f [ 1 ] = 0 , f [ 2 ] = 1 , f [ i ] = ( n − 1 ) ( f [ i − 1 ] + f [ i − 2 ] ) f [ n ] = ∑ i = 0 n ( − 1 ) i ( n i ) ( n − i ) ! = n ! ∑ i = 0 n ( − 1 ) i 1 i ! \begin{cases} &f[1] = 0,f[2] = 1, f[i] = (n - 1)(f[i - 1] + f[i - 2]) \\ &f[n] = \sum_{i = 0}^{n} (-1)^i \binom{n}{i} (n - i)! = n! \sum_{i = 0}^{n} (-1)^i \frac{1}{i!} \end{cases} {f[1]=0,f[2]=1,f[i]=(n−1)(f[i−1]+f[i−2])f[n]=∑i=0n(−1)i(in)(n−i)!=n!∑i=0n(−1)ii!1
- 有趣的数列(考点:组合数求和时分解质因数可以采用计算质因子 p p p 的个数 n u m p = n / p 1 + n / p 2 . . . num_p = n / p^1 + n / p^2 ... nump=n/p1+n/p2...)