查询精神状态

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

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

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

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

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

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

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

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

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

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

  32. 要使两点之间 lca 的深度最小,应当尽量让两点的 dfs 序差异尽量大。点集的 lca 等价于 dfs 序最大点和最小点的 lca。

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

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

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

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

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

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

  39. 乘法分配律的快速乘,取位数为 \(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  阅读(144)  评论(0)    收藏  举报