编程题
### 问题描述 近日,缅北诈骗案的事情曝光,让小秋回忆起了一些陈年往事。 小秋和他的朋友小雨都是计算机专业的。一天他们看完一部电影之后,他们相互之间约定,要互相设计一个暗号。只要谁说出来,就说明他现在处于危险之中。但是他们认为一般的暗号太低级了,歹徒一听就听得出来,因此他们换了一个更高级的设定。 由于小秋和小雨的工作会互相经常进行一些字符串的传递工作,他们互相做了一些设定。定义了两个长度均为 $n$ 的字符串 $s ,t$,定义 $s[l,r]$ 表示 $s$ 从第 $l$ 个字符到第 $r$ 个字符的子串,$t[l,r]$ 同理。定义字符串 $s$ 和 $t$ 的匹配值为:$\sum_{i = 1}^{n - 1} \sum_{j = i + 1}^{ n} \text{Lcp}(s[i , j] , t[i , j])$ ,$\text{Lcp(a ,b)}$ 表示两个字符串的最长公共前缀的长度。如果这个值大于了 $2 \times n$,就说明发出字符串这个字符串的人有危险。 有一天小秋在正常工作,收到了小雨发给他的两个字符串,他一眼就看出这两个字符串有问题,小雨可能有危险。为了验证他的猜想,他拿出计算机开始计算这两个字符串的匹配值,可是小秋的算法跑的时间太长了,短时间内根本得不到结果,心急火燎的小秋找到了你,希望你能帮他写出更快的算法,你只需要告诉小秋这个两个字符串的匹配值。 ### 输入格式 第 $1$ 行输入一个整数 $n$,表示两个字符串的长度。 第 $2$ 行输入一个仅包含小写字母的字符串,表示小雨发的第一个字符串 $s$。 第 $3$ 行输入一个仅包含小写字母的字符串,表示小雨发的第二个字符串 $t$。 ### 输出格式 输出仅 $1$ 行,包含 $1$ 个整数,表示 $s$ 和 $t$ 的匹配值。 ### 样例输入 ``` 5 abaab abbab ``` ### 样例输出 ``` 17 ``` ### 说明 $\text{Lcp}$ 为 $1$ 的子串有 $\text{(a,a),(b,b),(a,a),(b,b),(ba,bb),(baa,bba),(baab,bbab)}$。 $\text{Lcp}$ 为 $2$ 的子串有 $\text{(ab,ab),(ab,ab),(aba , abb),(abaa,abba),(abaab,abbab)}$。 因此两个字符串的匹配值为 $17$。 ### 评测数据规模 对于 $20$% 的评测数据,$1 \leq n\leq 10^3$。 对于 $40$% 的评测数据,$1\leq n\leq 10^4$。 对于 $100$% 的评测数据,$1 \leq n\leq 10^5$。
查看答案
赣ICP备20007335号-2