求助滥用标题行,悬赏2关注
  • 板块灌水区
  • 楼主problem_
  • 当前回复11
  • 已保存回复11
  • 发布时间2021/12/1 18:02
  • 上次更新2023/11/3 23:10:22
查看原帖
求助滥用标题行,悬赏2关注
629197
problem_楼主2021/12/1 18:02

rt

## 思路

这道题我们可以先对字符串的所有后缀进行排序。那么答案肯定就是 $1\leq i\leq j\leq|s|$ 和 $1\leq k$ 了,也就是所有 $c_i\ldots j$ 中长度为 $k$ 的前缀相等的数量。如果 $i=j$,答案就是 $1\leq k\leq|c_i|$,也就是 $\dfrac{|s|\times (|s| + 1)}{2}$。然后让我们计算相邻后缀的最长公共子序列,也就是 $a_i=lcp(c_i,c_i+1)$。最后让我们计算 $1\leq i\leq j<|s|$ 和 $1\leq k$ ,也就是统计一下 $k\leq min(a[i][j])$ 的数量,输出结果就可以了。

思路

这道题我们可以先对字符串的所有后缀进行排序。那么答案肯定就是 1ijs1\leq i\leq j\leq|s|1k1\leq k 了,也就是所有 cijc_i\ldots j 中长度为 kk 的前缀相等的数量。如果 i=ji=j,答案就是 1kci1\leq k\leq|c_i|,也就是 s×(s+1)2\dfrac{|s|\times (|s| + 1)}{2}。然后让我们计算相邻后缀的最长公共子序列,也就是 ai=lcp(ci,ci+1)a_i=lcp(c_i,c_i+1)。最后让我们计算 1ij<s1\leq i\leq j<|s|1k1\leq k ,也就是统计一下 kmin(a[i][j])k\leq min(a[i][j]) 的数量,输出结果就可以了。

2021/12/1 18:02
加载中...