校园网站建设服务广告网站
久违的字符串计数题。
显然只用考虑 [ i : j ] [i:j] [i:j]这一段拼成的串。不难得出结论:设 n x t i nxt_i nxti表示 i i i之后第一个本质不同的字符的位置,那么 n x t i ≤ j nxt_i\le j nxti≤j,并且 s i ? s n x t i s_i?s_{nxt_i} si?snxti,或者 n x t i > j nxt_i>j nxti>j。
注意到限制对于左端点 l l l是固定的。对于左端点,保留最紧的,也就是 r r r最大的限制。这样设 f i , j f_{i,j} fi,j表示前缀 i i i,且 s i s_i si等于 j j j的答案,发现贡献是一段区间,可以差分搞一下。可能稍微有一点麻烦。
注意不要算重。
复杂度 O ( 26 n ) O(26n) O(26n)。