回响形态 / String


提交程序

分数: 1
时间限制: 0.5s
内存限制: 1G

作者:
题目类型

B. 回响形态 / String

时间限制: 0.5 秒 空间限制: 1024 MiB

题目描述

请注意本题特殊的时间限制。 给定一个长为 n 的串 s。称子串 s[i ... j] 的中心是 (i + j) / 2。 现在你要回答 q 次询问,每次询问给出一个 k,问所有中心为 k / 2 的子串的 border 个数之和。 border 的定义如下: 一个非空字符串t 是另一个字符串 s 的 border, 当且仅当t 既 是 s 的前缀, 也是s 的后缀。 例如, 对任一个非空字符串s,s 本身就是一个 s 的 border。

输入格式

从标准输入读入数据。 第一行包含两个正整数 n(1 ≤ n ≤ 10^6), q(1 ≤ q ≤ 20),表示输入字符串 s 的长度 及询问次数。 第二行包含一个长度为 n 的字符串 s,由英文小写字母组成。 接下来 q 行,每行一个整数 k(2 ≤ k ≤ 2n),表示一组询问。

输出格式

输出到标准输出。 输出 q 行,第 i 行表示第 i 个询问的答案。

样例

样例 1 输入
9 6
bbabbbbaa
2
5
10
11
14
15
样例 1 输出
1
3
8
9
3
2

样例 1 解释

当 k = 2 时,以 k/2 为中心的子串只有 s[1 ... 1] = b,border 数为 1。 当 k = 5 时, 以k/2 为中心的子串有 s[2 ... 3] = ba, s[1 ... 4] = bbab,border 数分别 为 1,2。 当 k = 10 时,以 k/2 为中心的子串有 s[5 ... 5] = b, s[4 ... 6] = bbb, s[3 ... 7] = abbbb, s[2 ... 8] = babbbba, s[1 ... 9] = bbabbbbaa,border 数分别为 1,3,1,2,1。


评论

目前没有评论。