查询精神状态

  1. 考试策略:两刻钟~三刻钟写完暴力,不仅是为了保底分,也为了对拍。对拍是必要的,先写好 gen 和 checker 的板子存好,这是和缺省源一块在准备时间弄好的,同时也要提前做好环境配置。不能头铁,打满暴力输不了,但是切了题才能赢。

  2. 欧拉反演:\(\phi(n) = \sum_{d|n} d \times \mu(\frac{n}{d}) \quad \Rightarrow \quad n = \sum_{d|n} \phi(d)\)。遇到带 \(\gcd\) 求和的式子尝试直接把 \(\gcd\) 带到 \(n\) 里面,将 \(\gcd\) 换成 \(\sum_{d|\gcd} \phi(d)\), 然后大力推式子。

  3. 对于类似这样的式子转化可以不用莫比乌斯反演:\(\sum_{i=1}^n \sum_{j=1}^n [\gcd(i,j) == 1] = 2 \times \sum_{i=1}^n \phi(i)\)

  4. 枚举子集:for(int i=S;i;i=S&(i-1))

  5. string不能写S=S+A,写成S+=A

  6. 开龙龙左右移要1ll<<a1ll>>a

  7. swap 的底层实现是用一个中间变量来回倒腾,所以 swap 两个容器复杂度不是 \(\Theta(1)\),而是容器的大小!!!不过交换指针的话还是 \(\Theta(1)\)

  8. 不会吧不会吧不会有人不会写快写,用快读加不去捆绑的 cout 吧/cf。

  9. 哈希取模贼慢,感觉复杂度紧一点就写自然溢出/fn。再写双哈希我就是狗。

  10. 有些时候维护信息暴力合并并查集复杂度是对的,注意均摊。

  11. \(\sum_{i=0}^m \binom{n}{i} \binom{m}{m-i} = \binom{m+n}{m}\)

  12. \(\sum_{i=0}^n \binom{i}{k} = \binom{n+1}{k+1}\)

  13. 网络流初始化源汇点。

  14. 构造线性基枚举二进制位到 \(0\)

  15. 只有子树操作,不需要记录 dfn 序,直接一遍 dfs 求 dfs 序就行,即进入节点时间和离开节点时间。

  16. 对于排列 \(P_i\),做 \(i \to P_i\) 得到的是若干个环,可以根据具体题目考虑其实际意义。

  17. 线段树维护的启发式合并可以直接线段树合并啊。

  18. 模型转化可以变成几何问题考虑实际意义。

  19. 一次函数相互复合还是一次函数,可以线段树轻松维护多个一次函数的复合运算。

  20. 规约问题是从弱归到强。

  21. 树上点 \(a\) 到 路径 \((b,c)\) 的距离为 \(dis_{a,b} + dis_{a,c} - dis_{b,c}\)

  22. 求连接标记点所需最小的边集长度,将它们按 dfs 序排序,从小到大相邻两项两两求 \(dis\) 后相加除以二。

  23. 对于序列上不好表示的单个值约束,可以考虑转化成前缀和的形式(如一个区间内至少有几个位置上有值)。

  24. 整点凸包上的点数上界为 \(n^{\frac{2}{3}}\)

  25. 容斥不会,直接大力分类讨论,很蠢但是有分。

  26. 线段树卡空间可以叶子区间大小调大一点不用为 \(1\),底层节点使用分块处理。

  27. vector 和 set 等 STL 初始是不需要清空的,但是 array 需要手动赋初值。

  28. 维护幂次低的幂的区间信息的东西往二项式定理上想,拆出来预处理组合数后是好维护的。

  29. LCT 的一些定义基础内容

  30. dfs 序上最后一个点必定是叶子,第一个点必定和第二个点直接相连。

  31. 分 sub 写的多测要注意都清空!

  32. 生成树中存在第 \(k\) 小的边权为 \(w\) 的边,充要条件为图中存在边权为 \(w\) 的边,且最小生成树第 \(k\) 小边 \(\leq w\),最大生成树第 \(k\) 小边 \(\geq w\)

  33. 要使两点之间 lca 的深度最小,应当尽量让两点的 dfs 序差异尽量大。

  34. 使得点集连通的最小边集大小:按照 dfs 序排序之后相邻两两距离之和 \(÷2\)(包括头尾)。

  35. 使括号序列修改(左变右,右变左,保证序列长度为偶数)为合法的最小次数:设 \(( = -1,) = 1\),定义 \(pr\) 为前缀最大值,\(sf\) 为后缀最小值,那么一个区间的答案为 \(\lceil pr/2 \rceil + \lceil |sf/2| \rceil\)

  36. 平面图中的欧拉定理:设 \(G\) 为任意的连通的平面图,则 \(V − E + F = 2\)\(V\)\(G\) 的顶点数,\(E\)\(G\) 的边数,\(F\)\(G\) 的面数。

  37. CF 直接用 map 是最快的,不要用 unordered_map 或者 gp_hash_table!!!

  38. 带权重心是带权 dfs 序中位数祖先。

  39. 通配符括号序列是否合法

  40. 乘法分配律的快速乘,取位数为 \(x\)

inline int mul(int a,int b,int p)
{
	static const int x=25;
	int l=a*(b>>x)%p*(1ll<<x)%p;
	int r=a*(b&((1ll<<x)-1))%p;
	return (l+r)%p;
}
  1. \(\nu_p(n!) = \dfrac{n - s_p(n)}{p - 1}\)

  2. \([l,r]\)\(x\) 的倍数个数:\(\lfloor \dfrac{r}{x} \rfloor - \lceil \dfrac{l}{x} \rceil + 1\)

  3. 重心只会在根重链上。

  4. 斜率优化,\(i\) 相关是 \(x\)\(y\)\(j\) 相关是 \(k\)\(b\)

  5. \(a \oplus b = c\)\(popcount(a) + popcount(b) \equiv popcount(c) (\mod 2)\)

  6. \(k\) 遍 dij 可以用堆优化 floyd,存储二元组形如 \(u \to v\) 的最短距离。

  7. 将一个数对一些不同的数连续取模,有效取模只会进行 \(\log\) 次。

posted @ 2022-11-09 12:42  LgxTpre  阅读(91)  评论(0编辑  收藏  举报