首页 > 其他 > 详细

[AHOI2013] 差异

时间:2020-05-17 01:18:44      阅读:62      评论:0      收藏:0      [点我收藏+]

真的都忘了吗?

正文

原题传送门

简要题义:给你一个长度嵬 \(n\) 的 字符串,对于其任意两个后缀,求累和其除去公共前缀的长度之和

\[ans \ 即 \sum _{1\le i <j \le n}(i + j) - 2 * \sum_{1\le i <j \le n} LCP(i, j) \\ 即 \sum_i (\frac{3}{2}i(i - 1))- \sum_{1\le i <j \le n} LCP(i, j) \\即 \frac{(n-1)n(n + 1)}{2}-\sum_{1\le i <j \le n} LCP(i, j) \]

运用 SA 求出 ht 之后利用单调栈计算答案即可,注意区间的开和闭,因为 \(LCP(i, j) = min_{i < k \le j}\{ht[k]\}\) 这是显然的,所以能用单调栈来算。找到第一比他小的,原来算过,只算新的就好。

代码

没有 遇过 某某

[AHOI2013] 差异

原文:https://www.cnblogs.com/zhltao/p/12903150.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!