专栏文章

CF1098F Ж-function

CF1098F题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mimz6qrf
此快照首次捕获于
2025/12/01 17:57
3 个月前
此快照最后确认于
2025/12/01 17:57
3 个月前
查看原文
先对原串翻转,建出 SAM,设前缀 ii 在 SAM 的位置是 posipos_i,要求的就是 i=lrmin(il+1,deplca(posi,posr))\sum\limits_{i=l}^r \min(i-l+1,dep_{lca(pos_i, pos_r)})
对后缀树重链剖分,把每个 ii 和询问的 rr 插到 posxpos_x 祖先的 O(logn)O(\log n) 个重链中,对每个重链分别求答案,再减去来自同一轻子树的询问的前缀即可,那么现在就转成序列问题了。
为了方便,下设 depidep_iposipos_i 在当前重链对应点的 dep。显然只需统计 deplcail+1dep_{lca} \le i - l + 1 的所有 deplcadep_{lca} 之和与对应 ii 之和,稍微讨论一下偏序关系容易得到询问 [l,r][l,r] 的贡献:
  • depideprlidepi+1irdep_i \le dep_r \land l \le i - dep_i + 1 \le i \le r
  • depi>deprl+depr1irdep_i > dep_r \land l + dep_r - 1 \le i \le r
第二个限制是好求的,但第一个限制是三维的限制,直接做需要两个 log\log,比较劣。
观察到 [idepi+1,i][i - dep_i + 1, i] 的区间长度刚好是 depidep_i,此时不妨讨论一下与 [l,r][l,r] 长度与 deprdep_r 的关系:
  • rdepr+1<lr - dep_r + 1 < l,此时 depi>deprdep_i > dep_rii 必定不会满足第一个限制,所以只用统计满足 lidepi+1irl \le i - dep_i + 1 \le i \le rii 即可。
  • rdepr+1lr - dep_r + 1 \ge l,此时 depidepxdep_i \le dep_x 中不合法的 ii 只需满足 idepi+1<li - dep_i + 1 < l,因为若 i>ri>r 那么区间长度要大于 rl+1r - l + 1,就比 deprdep_r 大了。
此时通过讨论即可成功把限制降为二维的,bit 统计即可。
复杂度 O(nlog2n)O(n\log^2 n)

评论

0 条评论,欢迎与作者交流。

正在加载评论...