专栏文章

ABC417G

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

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@miok1a1n
此快照首次捕获于
2025/12/02 20:28
3 个月前
此快照最后确认于
2025/12/02 20:28
3 个月前
查看原文
智力巅峰体验卡。
考虑暴力跳的过程。我们发现跳到组成该串的两个串之间的较短串的次数是 O(logL)O(\log L) 的(LL 是串长),因为这样一次串长至少减半。因此我们考虑快速在两次“跳较短串”之间转移。
容易发现这等价于我们要能够维护极长的“连续跳较长串”的过程,这个可以倍增实现。具体的,维护从当前串的哪个区间 [l,r][l,r] 出发,可以连续跳 2k2^k 次较长串即可。注意处理串长 >1018>10^{18}(不然上面那个 logL\log L 是错的,串长会达到指数级,应及时截断)和这个区间不存在的情况即可。
复杂度的话,倍增数组直接在加入一个新串的时候在线处理;求解答案需要 O(logL)O(\log L) 次跳较短串,每次需要 O(logn)O(\log n) 的倍增找位置,故总复杂度 O(nlognlogL)O(n\log n\log L)

评论

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

正在加载评论...