#P4600. [HEOI2012] 旅行问题

[HEOI2012] 旅行问题

题目描述

yz 是 Z 国的领导人,他规定每个地区的名字只能为 2626 个小写拉丁字母的一个。由于地区数有可能超过 2626 个,便产生了一个问题,如何辨别名字相同的地区?于是 yz 规定,一个地区的描述必须包含它的所有上级,且上级按次序排列。于是,一个地区的描述是一个字符串。比如说,一个地区的名字为 c\tt c,它的上级为 b\tt b,b\tt b 的上级为 a\tt a,a\tt a 没有上级,那么这个地区就描述为 abc\tt abc。显然,这个描述同时包含了 c\tt c 的上级 b\tt b 和 b\tt b 的上级 a\tt a 的描述,分别为 ab\tt ab 和 a\tt a。

值得注意的是,每个地区最多有一个上级,同一上级的地区之间名字不同,没有上级的地区之间名字不同。

现在,yz 对外公布了 nn 个地区的描述,这些描述中包含了 Z 国所有地区的描述,并让你处理来访者的旅行问题。

现有 mm 对人访问这个国家,对于每对人,第一个人喜欢第 ii 个描述中的第 jj 个地区,设这个地区描述为 s1s_1,第二个人喜欢第 kk 个描述中的第 ll 个地区,设这个地区描述为 s2s_2。他们为了统一行程,决定访问描述为 ss 的地区(显然他们只关心地区的名字,并非是地区本身),设 ss 的长度为 tt,ss 需要满足以下条件:

  1. t≤jt\leq j,t≤lt\leq l。
  2. s[1⋯t]=s1[j−t+1⋯j]s[1\cdots t]=s_1[j-t+1\cdots j],s[1⋯t]=s2[l−t+1⋯l]s[1\cdots t]=s_2[l-t+1\cdots l],即 ss 为 s1s_1 中 11 到 jj 位与 s2s_2 中 11 到 ll 位的公共后缀。
  3. tt 最大化。

为了不使输出过大,你只需把这个字符串按照如下生成的 2626 进制数转成 1010 进制后  mod  (109+7)\bmod\ (10^9+7) 后输出:

  • a→0a \to 0;
  • b→1b \to 1;
  • ……
  • z→25z \to 25。

比如地区 cab\tt cab 被编码成 2×262+0×261+1×260=13532\times26^2+0\times26^1+1\times26^0=1353。

输入格式

第一行给定一个整数 nn。

第 2⋯n+12\cdots n+1 行,每 i+1i+1 行给定一个字符串 aia_i,表示第 ii 个描述。

接下来一行一个整数 mm。

接下来 mm 行,每行给定四个整数 i,j,k,li,j,k,l,字母含义与题目描述一致。

输出格式

共 mm 行,每行一个整数,表示答案字符串的编码。

2
aabb
babb
2
1 3 2 3
1 4 2 4 
1
1

提示

样例解释

询问 11 中的公共后有 ab\tt ab 和 b\tt b,但是没有 ab\tt ab 这个地区,只有 b\tt b 地区,所以只能选择 b\tt b 这个地区;

询问 22 中的公共后有 abb\tt abb,bb\tt bb 和 b\tt b,但是没有 abb\tt abb 和 bb\tt bb 这两个地区,只有 b\tt b 地区,所以只能选择 b\tt b 这个地区。

数据范围及约定

设这个国家地区总数数为 tottot(注意:输入的字符串总长度可能超过 tottot!)

  • 对于 30%30\% 的数据,满足 1≤tot,m,n≤1001\le tot, m, n \le 100;
  • 对于 50%50\% 的数据,满足 1≤tot,m,n≤10001\le tot, m, n \le 1000;
  • 对于 80%80\% 的数据,满足 1≤tot,m,n≤1051\le tot, m, n \le 10^5;
  • 对于 100%100\% 的数据,满足1≤tot,m,n≤1061\le tot, m, n \le 10^6。

保证输入文件不超过 20MB20\text{MB}。

HEOI2012 Day 2 Task 2