Square Root Techniques

Square Root Techniques

  1. 对于 \(n\) 个数 \(a_i\)\(\sum a_i=m\) 那么不同 \(a_i\) 的个数只有 \(O(\sqrt{m})\) 种。
  2. 对于一张边数为 \(m\) 的图,度数 \(\geq \sqrt{m}\) 的点只有 \(O(\sqrt{m})\) 个。
  3. 将序列按照 \(B\) 长度进行分块,那么区间查询会查询 \(O(\frac{n}{B})\) 个整块,会查询 \(O(B)\) 个散点。
  4. 莫队,首先按照左端点所在块编号排序,其次按照右端点排序,达到 \(n\sqrt(n)\)
  5. 带修改莫队,首先按照左端点所在块编号排序,其次按照右端点所在块编号排序,最后按照时间排序,达到 \(n^{\frac{5}{3}}\)
  6. 回滚莫队,在只适合删除或者插入的时候,在左端点进行回滚,做完一个询问就撤销,右端点的修改则保留。
  7. 定期重构,统一处理 \(B\) 个询问,做完之后重构数据结构,重构的次数只有 \(\frac{n}{B}\) 次。
  8. BSGS算法,求解离散对数。
  9. 光速幂,对于固定 \(a,p\),询问 \(a^b \mod p\) 的问题,对于 \(0\leq i \leq \sqrt{p}\) 处理 \(a^i,a^{i\sqrt{p}}\)

References

https://codeforces.com/blog/entry/96713

posted @ 2025-04-08 00:02  妖灵梦  阅读(40)  评论(0)    收藏  举报