CF1817F Entangled Substrings
题目描述
量子纠缠是指两个粒子以某种方式相互关联,无论它们在空间中相距多远。
给定一个字符串 $s$。如果一对非空子串 $(a, b)$ 满足存在一个(可能为空的)连接字符串 $c$,使得:
- $s$ 中每一次出现 $a$ 都紧接着出现 $cb$;
- $s$ 中每一次出现 $b$ 都紧接着出现在 $ac$ 之后。
换句话说,$a$ 和 $b$ 只会作为 $acb$ 的子串出现在 $s$ 中。请计算 $s$ 的所有纠缠子串对的总数。
如果字符串 $a$ 可以通过从字符串 $b$ 的开头删除若干(可能为零或全部)字符,并从结尾删除若干(可能为零或全部)字符得到,则称 $a$ 是 $b$ 的子串。
输入格式
输入仅一行,包含一个仅由小写英文字母组成的字符串 $s$($1 \leq |s| \leq 10^5$),即需要统计纠缠子串对的字符串。
输出格式
输出一个整数,表示 $s$ 的纠缠子串对的总数。
说明/提示
在第一个样例中,唯一的纠缠对子串对是 (ab, ba)。对于这对子串,连接字符串 $c$ 为空,因为它们只作为整个字符串 abba 的子串出现,ab 和 ba 之间没有其他字符。
在第二个样例中,没有纠缠对子串对。
在第三个样例中,纠缠对子串对有 (a, b)、(b, c)、(a, c)、(a, bc) 和 (ab, c)。对于大多数对子,连接字符串 $c$ 为空,只有对于 (a, c) 这一对,连接字符串 $c$ 是 b,因为 a 和 c 只作为字符串 abc 的子串出现。
由 ChatGPT 4.1 翻译