loj#P2742. 「JOI Open 2016」销售基因链

「JOI Open 2016」销售基因链

题目描述

译自 JOI Open 2016 T2 「RNA 鎖の販売 / Selling RNA Strands」

基因库中有 NN 个字符串,这些字符串仅由 A, G, U, C组成(保证每个字符串都包含四种字母)。
MM 组查询,每组查询包含两个字符串 P,QP,Q,试求:基因库中有多少个字符串同时存在前缀 PP 和后缀 QQ
举个例子,GAC 存在前缀 G, GA, GAC,存在后缀 C, AC, GAC,那么我们可以说:GAC 同时存在前缀 GA 和后缀 AC

输入格式

第一行有两个整数 N,MN, M
在接下来的 NN 行中,每行一个字符串 SiS_i,表示基因库中的一个字符串。
在接下来的 MM 行中,每行有两个用空格分隔的字符串,表示一组查询。

输出格式

输出共 MM 行,每行一个整数,表示符合查询条件的字符串的数量。

2 3
AUGC
AGC
G C
AU C
A C
0
1
2
3 3
AA
AA
AGA
AA AA
AG GA
AG GA
2
1
1
8 7
GCGCUACCCCAACACAAGGCAAGAUAUA
G
GGAC
GCGG
U
GCGCUACCCCAACACAAGGCAAGAUGGUC
GCCG
GCGCUGA
GCGCUACCC A
GCGCUACCCC AC
GCG C
GCGC A
G G
G C
G GGA
1
0
1
2
3
2
0

数据范围与提示

对于所有数据,1N,M,1\le N, M, len(Si),\textrm{len}(S_i), len(Pj),\textrm{len}(P_j), len(Qj)\textrm{len}(Q_j) 105,\le 10^5, 1len(Si),1\le\sum\textrm{len}(S_i), len(Pj),\sum\textrm{len}(P_j), len(Qj)\sum\textrm{len}(Q_j) 2×106\le 2\times 10^6

子任务 1(10 分)   N,M,\ \ N, M, len(Si),\textrm{len}(S_i), len(Pj),\textrm{len}(P_j), len(Qj)\textrm{len}(Q_j) 100\le 100
子任务 2(25 分)   N,M5000\ \ N, M\le 5000
子任务 3(25 分)   len(Si),\ \ \sum\textrm{len}(S_i), len(Pj),\sum\textrm{len}(P_j), len(Qj)\sum\textrm{len}(Q_j) 105\le 10^5
子任务 4(40 分)   \ \ 没有额外限制。