题目描述
有 N 个字符串,每个字符串有一个权值 vi。随后给出 M 次询问,每次对一个区间进行检测。令最长的字符串长度为 L,那么会给出 g1,...,gL 表示每个长度的字符串的「识别值」。
对若干个字符串构成的集合 P 进行测试的过程如下:
对字符串 S 定义 f(S) 表示 S 在 P 中以其为前缀出现的串的权值和。 那么如果 S 在 P 中作为前缀出现过,并且 Bf(S)+A×len(S)≥C,那么则将 glen(S) 加入集合 G。
最后随机选择一个区间 [x,y](1≤x≤y≤L),如果 [x,y]⋂G=∅,那么测试成功,否则测试失败。输出测试成功的概率并用最简分数表示。
特别地,整数 k 表示为 k/1。
输入格式
第一行四个数 N,A,B,C。
接下来一行 N 个数 v1,...,vN。
接下来 N 行表示 N 个字符串。
接下来一行 L 个数表示 g1,...,gL,保证 g1,...,gL 是一个 1 至 L 的排列。
接下来一行一个数 M。
接下来 M 行,每行两个数 l,r,表示对第 l 到第 r 个字符串进行测试。
输出格式
M 个数表示答案。
5 2 3 15
1 2 3 2 0
aba
aa
abb
aaa
bbbb
1 3 2 4
6
1 4
1 3
2 3
2 4
5 5
3 5
9/10
9/10
7/10
9/10
0/1
7/10
数据范围与提示
测试点编号 |
N,M≤ |
∑∣si∣≤ |
si≤ |
1 |
10 |
30 |
|
2 |
100 |
300 |
3 |
1000 |
3000 |
4 |
10000 |
30000 |
10 |
5 |
105 |
3×105 |
6 |
10000 |
30000 |
|
7 |
20000 |
50000 |
8 |
30000 |
70000 |
9 |
50000 |
100000 |
10 |
105 |
3×105 |
对于 100% 的数据, 0≤vi,A,B,C≤109。