• 传送门
  • solution
    \(O(n\log n)\)的标算大家都知道了。。
    说一个\(\log^2\)的以及常数优化。

直接考虑优化暴力。
显然最多只用合并\(n-1\)次就可以了,所以在这\(q\)次询问中所要求合并的元素中,并不是所有的(这可能高达\(nq\))合并都是需要的,实际上大部分是不需要的。
所以我们考虑用线段树维护\(hash\)值,求一个LCP来跳过相同的一段。这样就必须把并查集改成链表的启发式合并。所以时间复杂度为\(O(n\log^2 n(启发式合并)+(q+n)\log^2 n(需要询问(q+n)次\mathrm{LCP}))\)

  • 常数优化(hztOrz)
    把询问LCP那一段改成分治来做,如果发现一段相同就直接不做了。这样感觉\(q\log^2 n\)会变得很不满,就跑得飞快了。

相关文章:

  • 2022-01-10
  • 2021-08-17
  • 2022-01-29
  • 2022-01-10
  • 2021-10-12
  • 2021-07-27
  • 2022-12-23
  • 2022-01-18
猜你喜欢
  • 2021-11-27
  • 2021-07-18
  • 2022-02-08
  • 2021-05-28
  • 2022-02-08
  • 2022-01-21
相关资源
相似解决方案