首页 > 技术文章 > 卡常专题

Charlie-Vinnie 2022-02-11 17:22 原文

卡常总妙招:常数大的算法分段处理,$n$ 较小时暴力

网络流卡常技巧

  1. Dinic 比 Edmonds-Karp 快很多,无论什么时候,初始图都要跑 Dinic
  2. Dinic 玩二分图是 $O(m\sqrt{n})$ 的,不要怀疑
  3. 即使是单条边增广,也要用 bfs 的 Edmonds-Karp 而不是 dfs 的 Ford-Fulkerson
  4. 不要大量复制数组,想办法撤销:head[u]=nxt[head[u]],用一个栈记录下来所有变化过的流,然后撤回去
  5. 网络流跑的时间与值域有很大关系,可以考虑让 inf 尽量小,时间上快很多

NTT 卡常技巧

  1. 用 int 而不是 long long
  2. unsigned long long 减少取模
  3. 当 $n+m \le 100$ 时直接暴力卷积,速度加快极其明显!
  4. 仔细观察卷积时是否有重复做 NTT 的情况,把封装好的卷积拆开可能会次数减少,获得奇效!

图论卡常技巧

  1. 用邻接表会比用 vector 快不少(不过实在无处可卡时再用吧)

推荐阅读