Tricks

Tricks

  • 二维平面的问题,要善用三角函数。

  • 树上路径计数,可以枚举路径的中点。

  • 有限制上下界的问题,可以差分。例如求最小距离在 \([L,R]\) 中的方案数,可以差分成最小距离 \(\ge L\) 的方案数前去最小距离 \(\ge R + 1\) 的方案数。

  • DAG 计数,状压,枚举度数为 \(0\) 的点,容斥。CF1466H

  • 支配对问题。一些树上问题,如果两种点对一个一定比一个更劣,那么一定不选择劣的那一个。一些题能通过证明得到有用点对只有 \(O(n \log n)\) 种,可以 DSU on Tree 或者点分治等做法维护这些点对。

  • 对于模数为 \(U^V\)\(U,V\) 范围都很小。比如求的式子为 \(\prod (a_i+x)\),拆成 \(\prod ((a_i+b)+xU)\)。看成关于 \(xU\) 的多项式。且多项式次数不超过 \(V\)。可以维护多项式。P10175NFLS NOIP16 C

  • 置换不满足交换律。类似矩阵。可以快速幂。

  • 设前缀和为 \(sum_i\),每个点为 \((i,sum_i)\),斜率为平均数。

  • 期望的线性性。ARC114E

  • 正难则反。ARC112E

  • 记得想 Hash。可以线段树维护 Hash 值(NFLS NOIP20 B)。对集合 Hash(NOI2024 D1T1)。

  • 多个公平组合游戏的 SG 函数值为每个公平组合游戏的 SG 函数值的异或和。比如给定一棵树,树上有一些点有一些棋子,每次选择一个棋子移动。就是多个一棵树只有一个棋子的游戏。

  • 数据随机可能有数据随机的做法。

  • 和二进制有关的按位考虑,可以低位到高位。

  • 可以猜三分。三分注意平台。

  • 期望题可以考虑 Min-Max 容斥。

  • 组合数前缀和用莫队。

  • \(\sum_{i=0}^k(-1)^i {n \choose i} = (-1)^k {n - 1 \choose k}\)

  • 有关位运算的 DP 式子可以 FWT,按位考虑。NFLS SXT2

  • 曼哈顿距离 AGC034D \(\lvert x_1 - x_2 \rvert + \lvert y_1 - y_2 \rvert = \max \left\{ (x_1 + y_1) + (- x_2 - y_2), (x_1 - y_1) + (- x_2 + y_2), (- x_1 + y_1) + (x_2 - y_2), (- x_1 - y_1) + (x_2 + y_2) \right\}\)

  • 多少次才选中一个元素的期望的操作次数, 等于每一轮均没有一个元素被选中的概率之和。AGC038E

  • 欧拉数。长度为 \(n\) 的排列,\(\sum [p_i > p_{i+1}]=m\)。相当于排列分成了 \(n - m\) 段,段内升序,每段不可空。JOISC2018 D1T1

    \[\begin{aligned} & \left\langle\begin{matrix}n \\ m\end{matrix}\right\rangle \\ = & \sum_{k=m}^n \binom k m (-1)^{k-m}\sum_{i=0}^{n-k} (-1)^{n-k-i} \binom {n-k} i i^{n} \\ = & \sum_{i=0}^{n-m} (-1)^{n-m-i} i^n\sum_{k=m}^{n-i} \binom k m \binom {n-k} i \\ = & \sum_{i=0}^{n-m} (-1)^{n-m-i} i^n \binom{n + 1}{m + i + 1} \end{aligned} \]

  • DP。对于 \(f_i\) 不同 \(j\) 的取值 \(f_{i,j}\) 的取值只有有限个,且权值递增或递减。可以维护分界点。AGC040E

  • 有向图无负环那么就是差分约束有解。AGC036D

  • 一些线段随机覆盖一个区间,比如一个线段覆盖的位置是 \(x + 0.1 y\),那么把这个区间所有小数部分是 \(y\) 的拿出来离散化。AGC020F

  • 比如求连通块大小的期望,可以求 \(\sum_s 大小 \ge s 的个数\)NFLS SX43 T2

  • 树上每个点点权设为点分树上的深度,那么对于两个标号相同的点,它们之间的路径上一定存在一个点点权大于它们的点权。且相邻点权不同。这是充要条件。AGC009D

  • 对于完全图的 MST,分成若干个集分别做 MST,然后对所有答案做 MST 的答案为最终答案。AT_cf17_final_j

  • 绝对众数

    1. 摩尔投票。不可删除,可以撤销。记录二元组即可。需要检查。
    2. 绝对众数一定是中位数。需要检查。
    3. 二进制分组。如果 \(x\) 为中位数。设 \(x\) 二进制下第 \(k\) 位位 \(o\),那么只考虑第 \(k\) 位的众数也为 \(o\)
  • 不可删除问题可以考虑离线扫描线,猫树分治一类。

  • \time -v "%M"./A 查看动态内存。

Educational Problems

DP

P6773 NOI2020 命运

图论

ARC084B

Others

Dilworth

\((A,\le)\) 是偏序集:

  1. 自反性:\(\forall a\in A,a\le a\)
  2. 反对称性:\(\forall a,b\in A\),若 \(a\le b,b\le a\),则 \(a=b\)
  3. 传递性:\(\forall a,b,c\in A\),若 \(a\le b,b\le c\),则 \(a\le c\)

全序集:

对于集合 \(\forall a,b\in B\),都有 \(a\le b\)\(b\le a\),则称 \((B,\le)\) 是全序集。

链:两两可比。

反链:若偏序集 \((B,\le)\) 两两不可比,则称 \(B\) 为反链。

链覆盖,反链覆盖:交集为 \(\varnothing\)

偏序集高度:最长链的元素个数。

偏序集宽度:最长反链的元素个数。

Dilworth 定理

偏序集能划分成的最少的全序集个数等于最大反链的元素个数。

DAG 中,链是一些点的集合,对于任意两个点 \(x,y\),满足 \(x\) 能到达 \(y\),或 \(y\) 能到达 \(x\)

最长反链长度 = 最小链覆盖。

对偶定理:最长链长度 = 最小反链覆盖。

对偶图

P4001 狼抓兔子

对于给定平面图 \(G\),得到对偶图 \(G'\)

\(G\) 的每个面 \(f\) 上作为 \(G'\) 的一个顶点。

对于 \(G\) 的一条边 \(e\),若 \(e\) 是两个面的公共边,则 \(G'\) 中这两个面的顶点连边。否则 \(e\) 做环穿过 \(e\)

\((G')'=G\)

摩尔投票

寻找多数元素,即出现次数超过一半以上的元素。

  1. 如果票数为 \(0\),则将当前元素设置为候选元素,票数设置为 \(1\)
  2. 当前元素等于候选元素,票数 \(+1\)
  3. 当前元素不等于候选元素,票数 \(-1\)

最后遍历数组,查看是否有多数元素。

比如树找重心。

拉格朗日插值

点值转系数。\(O(n^2)\)

link

\[f(x)=\sum_{i=1}^n y_i(\prod_{j\not=i}\dfrac {x-x_j}{x_i-x_j}) \]

枚举 \(i\)\(y_i\prod_{j\not=i}\frac 1 {x_i-x_j}\) 可以 \(O(n)\) 计算。

\(F(x)=\prod_{i=1}^n(x-x_i)\)\(G_i(x)=\frac {F(x)}{x-x_i}\)

\[\begin{aligned} F(x)_0=-x_jG_j(x)_0\\ F(x)_i=G_j(x)_{i-1}-x_jG_j(x)_i&(i>1) \end{aligned} \]

\[\begin{aligned} G_j(x)_0=\dfrac{-F(x)_0}{x_j}\\ G_j(x)_i=\dfrac{G_j(x)_{i-1}-F(x)_i}{x_j}&(i>1) \end{aligned} \]

\(x_j=0\) 的情况要特殊判掉。

贝叶斯公式

\[P(B\mid A)=\dfrac {P(AB)}{P(A)} \]

狄利克雷卷积

\[(f*g)(n)=\sum_{d\mid n}f(d)g(\dfrac n d) \]

满足交换律,结合律。

\[d=1*1\\ \sigma=1*id\\ \sigma_k=1*id_k \]

\[\varphi * 1 = id \]

\[\mu*1=\varepsilon \]

证明

\[\mu*1=\sum_{d\mid n}\mu(d)=\sum_{i=0}^k(-1)^k {k\choose i}= 0^k \]

莫比乌斯反演

已知 \(g=f*1\),所以 \(\mu *g=f*1*\mu=f*\varepsilon\),即 \(f=\mu * g\)

已知 \(g(n)=\sum_{n\mid d}f(d)\),则 \(f(n)=\sum_{n\mid d}\mu(\dfrac d n)g(d)\)

证明

\(k=\dfrac d n\),则

\[\sum_{n\mid d}\mu(\dfrac d n)g(d)\\ =\sum_k\mu(k)g(nk)\\ =\sum_k\mu(k)\sum_{(nk)\mid t}f(t)\\ =\sum_t f(t)\sum_{(nk)|t}\mu(k)\\ =\sum_t f(t)\varepsilon(\dfrac t n)\\ = f(n) \]

\[\sum_{i=1}^{\lfloor\frac n d \rfloor}\sum_{j=1}^{\lfloor\frac m d\rfloor}[\gcd(i,j)=1]\\ =\sum_{i=1}^{\lfloor\frac n d \rfloor}\sum_{j=1}^{\lfloor\frac m d\rfloor}\sum_{x\mid i,x\mid j}\mu(x)\\ =\sum_{x=1}^{\lfloor\frac n d\rfloor}\mu(x)\lfloor\dfrac n{dx}\rfloor\lfloor\dfrac m {dx}\rfloor \]

\(d(x)\) 表示 \(x\) 的约数个数。

\[d(i,j)=\sum_{x\mid i}\sum_{y\mid j}[\gcd(x, y)=1] \]

高斯函数

\[\lfloor \dfrac a b \rfloor = \dfrac {a-a\bmod b}{b}\\ \lfloor {\dfrac {\lfloor \dfrac a b \rfloor} c} \rfloor=\lfloor \dfrac a {bc} \rfloor \]

posted @ 2024-10-03 17:07  Estelle_N  阅读(32)  评论(0)    收藏  举报