题目名称 2937. [HAOI 2018]字串覆盖
输入输出 2018cover.in/out
难度等级 ★★★☆
时间限制 3000 ms (3 s)
内存限制 512 MiB
测试数据 10
题目来源 GravatarBenjamin 于2018-04-24加入
开放分组 全部用户
提交状态
分类标签
HAOI
查看题解 分享题解
通过:0, 提交:3, 通过率:0%
Gravatar胡嘉兴 30 21.219 s 284.51 MiB C++
Gravataryrtiop 30 21.484 s 32.59 MiB C++
Gravatarsywgz 30 21.503 s 8.88 MiB C++
本题关联比赛
HAOI 2018 Day1
关于 字串覆盖 的近10条评论(全部评论)

2937. [HAOI 2018]字串覆盖

★★★☆   输入文件:2018cover.in   输出文件:2018cover.out   简单对比
时间限制:3 s   内存限制:512 MiB

【题目描述】

小 C 对字符串颇有研究,他觉得传统的字符串匹配太无聊了,于是他想到了这样一个问题。

对于两个长度为 $n$ 的串 $A, B$, 小 C 每次会给出给出 4 个参数 $s, t, l, r$。 令 $A$ 从 $s$ 到 $t$ 的子串 (从 1 开始标号) 为 $T$,令 $B$ 从 $l$ 到 $r$ 的子串为 $P$。 然后他会进行下面的操作:

如果 $T$ 的某个子串与 $P$ 相同,我们就可以删掉 $T$ 的这个子串,并获得 $K-i$的收益,其中 $i$ 是初始时 $A$ 中 (注意不是 $T$ 中) 这个子串的起始位置,$K$ 是给定的参数。删除操作可以进行任意多次,你需要输出获得收益的最大值。

注意每次询问都是独立的,即进行一次询问后,删掉的位置会复原。

【输入格式】

第一行两个整数 $n, K$,表示字符串长度和参数。

接下来一行一个字符串 $A$。

接下来一行一个字符串 $B$。

接下来一行一个整数 $q$,表示询问个数。

接下来 $q$ 行,每行四个整数 $s, t, l, r$,表示一次询问。

【输出格式】

输出 $q$ 行,每行一个整数,表示一个询问的答案。

【输入样例】

10 11
abcbababab
ababcbabab
5
1 9 7 9
3 10 8 10
1 10 1 2
5 7 2 3
1 5 3 6

【输出样例】

6
10
22
5
10

【样例解释】

对于第一组询问 T = abcbababa, P = aba,将加粗部分的子串删去,收益为$K − 5 = 6$。

对于第二组询问 T = cbababab,P = bab, 收益为 $(K − 4) + (K − 8) = 10$。

【数据范围与约定】

对于所有数据,有$1\leq n,q\leq 10^5,A,B$仅由小写英文字母组成,$1\leq s\leq t\leq n,1\leq l\leq r\leq n,n<K\leq 10^9$。

对于 $n = 10^5$ 的测试点,满足 $51 \leq r - l \leq 2000$ 的询问不超过 $11000$ 个,且$r-l$在该区间内均匀随机。