P15696 [2018 KAIST RUN Spring] QueryreuQ
题目描述
如果一个字符串正读和反读都相同,则称其为**回文串**。例如,像 “a”、“aa”、“appa”、“queryreuq” 这样的字符串都是回文串。
对于一个给定的初始为空字符串 $S$,你需要处理以下两种操作:
1. 在 $S$ 的末尾添加一个小写字母。
2. 删除 $S$ 末尾的一个字符。
在处理完每次操作后,你需要计算 $S$ 中**回文子串**的数量。对于字符串 $S$ 和整数 $i$, $j$($1 \le i \le j \le |S|$),$S[i, j]$ 表示 $S$ 中从第 $i$ 个到第 $j$ 个字符构成的子串。你需要输出满足 $S[i, j]$ 是回文串的整数对 $(i, j)$ 的数量。
输入格式
输入包含两行。
第一行给出一个整数 $Q$,表示操作的数量。
第二行给出一个长度为 $Q$ 的字符串来描述所有操作。第 $i$ 个字符 $K_i$ 表示第 $i$ 次操作。$K_i$ 是 ‘-’ 或小写字母(‘a’, ‘b’, …, ‘z’)(不包含引号)。
如果字符是 ‘-’,则你应该删除 $S$ 末尾的一个字符。如果字符是小写字母,则你应该将字符 $K_i$ 添加到 $S$ 的末尾。
保证每次操作后 $S$ 的长度始终为正数。
输出格式
在第一行输出 $Q$ 个由空格分隔的整数。第 $i$ 个整数应该是第 $i$ 次操作后的答案。
说明/提示
### 数据范围
- $1 \le Q \le 10,000$