luogu#P16693. Tokitsukaze and Palindrome Border

    ID: 16920 远端评测题 3000ms 512MiB 尝试: 0 已通过: 0 难度: 8 上传者: 标签>线段树树链剖分字典树 Trie回文自动机 PAMManacher 算法

Tokitsukaze and Palindrome Border

背景

但由于一些原因,本题未能出现在 Codeforces Round 789 中。

题目描述

给定一个字符串 ss。定义:

  • pre(s,len)\operatorname{pre}(s, len) 表示 ss 长度为 lenlen前缀子串;
  • suf(s,len)\operatorname{suf}(s, len) 表示 ss 长度为 lenlen后缀子串;
  • s|s| 表示字符串 ss 的长度。

对于任意两个字符串 sstt,定义函数 f(s,t)f(s, t) 为:

$$f(s, t) = \sum_{len=1}^{\min(|s|, |t|)} \operatorname{val}(len)$$

其中,val(len)\operatorname{val}(len) 的计算方式如下:

$$\operatorname{val}(len) = \begin{cases} len, & \text{若 } \operatorname{pre}(s, len) = \operatorname{suf}(t, len) \text{ 且 } \operatorname{pre}(s, len) \text{ 是回文串} \\ 0, & \text{其他情况} \end{cases}$$

注: 回文串是指正着读和反着读都相同的字符串,例如 aaaaba

现在 Tokitsukaze 有 nn 个字符串 s1,s2,,sns_1, s_2, \dots, s_n。同时,她提出了 qq 个询问。 每个询问将给出一个包含 kk 个正整数的集合 BB,表示被禁用的字符串下标。对于每个询问,求:

iBjBf(si,sj)\sum_{i \notin B} \sum_{j \notin B} f(s_i, s_j)

输入格式

第一行包含一个整数 nn (1n31051 \leq n \leq 3 \cdot 10^5),表示字符串的数量。

接下来 nn 行,每行包含一个由小写字母组成的字符串 ss (1s31051 \leq |s| \leq 3 \cdot 10^5)。

接下来一行包含一个正整数 qq (1q31051 \leq q \leq 3 \cdot 10^5),表示询问的数量。

接下来的 qq 行,每行包含 k+1k+1 个整数表示一个询问。第一个整数是 kk (0kin0 \leq k_i \leq n),紧接着 kk互不相同的正整数 BjB_j (1Bjn1 \leq B_j \leq n),表示被禁用的下标集合。

保证 s\sum |s|k\sum k 都不超过 31053 \cdot 10^5

输出格式

对于每个询问,输出一行包含一个整数表示答案。

2
a
aaa
4
0
1 1
1 2
2 1 2
9
6
1
0
3
a
aa
aaba
3
0
2 1 3
1 1
13
3
8

提示

样例一解释:

  • f(s1,s1)=1f(s_1,s_1)=1
  • f(s1,s2)=1f(s_1,s_2)=1
  • f(s2,s1)=1f(s_2,s_1)=1
  • f(s2,s2)=1+2+3=6f(s_2,s_2)=1+2+3=6

第一个询问的答案为 $f(s_1,s_1) + f(s_1,s_2) + f(s_2,s_1) + f(s_2,s_2) = 9$。

第二个询问的答案为 f(s2,s2)=6f(s_2,s_2) = 6

第三个询问的答案为 f(s1,s1)=1f(s_1,s_1) = 1

第四个询问,由于所有下标都被禁用了,所以答案为 00