CF1073G.Yet Another LCP Problem
省选/NOI-
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Let LCP(s,t) be the length of the longest common prefix of strings s and t. Also let s[x…y] be the substring of s from index x to index y (inclusive). For example, if $s = $ "abcde", then s[1…3]= "abc", s[2…5]= "bcde".
You are given a string s of length n and q queries. Each query is a pair of integer sets a1,a2,…,ak and b1,b2,…,bl. Calculate i=1∑i=kj=1∑j=lLCP(s[ai…n],s[bj…n]) for each query.
设 LCP(s,t) 表示字符串 s 与 t 的最长公共前缀的长度。同时,令 s[x…y] 表示字符串 s 中从下标 x 到下标 y(含端点)的子串。例如,若 $s = $ "abcde",则 s[1…3]= "abc",s[2…5]= "bcde"。
给定一个长度为 n 的字符串 s 以及 q 个查询。每个查询由两个整数集合组成:a1,a2,…,ak 和 b1,b2,…,bl。对每个查询,计算 i=1∑i=kj=1∑j=lLCP(s[ai…n],s[bj…n])。
输入格式
The first line contains two integers n and q (1≤n,q≤2⋅105) — the length of string s and the number of queries, respectively.
The second line contains a string s consisting of lowercase Latin letters (∣s∣=n).
Next 3q lines contains descriptions of queries — three lines per query. The first line of each query contains two integers ki and li (1≤ki,li≤n) — sizes of sets a and b respectively.
The second line of each query contains ki integers a1,a2,…aki (1≤a1<a2<⋯<aki≤n) — set a.
The third line of each query contains li integers b1,b2,…bli (1≤b1<b2<⋯<bli≤n) — set b.
It is guaranteed that i=1∑i=qki≤2⋅105 and i=1∑i=qli≤2⋅105.
第一行包含两个整数 n 和 q(1≤n,q≤2⋅105)—— 分别为字符串 s 的长度和查询次数。
第二行包含一个由小写拉丁字母组成的字符串 s(∣s∣=n)。
接下来的 3q 行描述了所有查询,每个查询占三行。每个查询的第一行包含两个整数 ki 和 li(1≤ki,li≤n)—— 分别为集合 a 和 b 的大小。
每个查询的第二行包含 ki 个整数 a1,a2,…,aki(1≤a1<a2<⋯<aki≤n)—— 集合 a。
每个查询的第三行包含 li 个整数 b1,b2,…,bli(1≤b1<b2<⋯<bli≤n)—— 集合 b。
保证 i=1∑i=qki≤2⋅105 且 i=1∑i=qli≤2⋅105。
输出格式
Print q integers — answers for the queries in the same order queries are given in the input.
输出 q 个整数——按输入中查询出现的相同顺序,依次输出各查询的答案。
输入输出样例
输入#1
7 4 abacaba 2 2 1 2 1 2 3 1 1 2 3 7 1 7 1 1 2 3 4 5 6 7 2 2 1 5 1 5
输出#1
13 2 12 16
说明/提示
Description of queries:
- In the first query s[1…7]=abacaba and s[2…7]=bacaba are considered. The answer for the query is LCP(abacaba,abacaba)+LCP(abacaba,bacaba)+LCP(bacaba,abacaba)+LCP(bacaba,bacaba)=7+0+0+6=13.
- In the second query s[1…7]=abacaba, s[2…7]=bacaba, s[3…7]=acaba and s[7…7]=a are considered. The answer for the query is LCP(abacaba,a)+LCP(bacaba,a)+LCP(acaba,a)=1+0+1=2.
- In the third query s[1…7]=abacaba are compared with all suffixes. The answer is the sum of non-zero values: LCP(abacaba,abacaba)+LCP(abacaba,acaba)+LCP(abacaba,aba)+LCP(abacaba,a)=7+1+3+1=12.
- In the fourth query s[1…7]=abacaba and s[5…7]=aba are considered. The answer for the query is LCP(abacaba,abacaba)+LCP(abacaba,aba)+LCP(aba,abacaba)+LCP(aba,aba)=7+3+3+3=16.
查询描述:
- 在第一个查询中,考虑子串 s[1…7]=abacaba 和 s[2…7]=bacaba。该查询的答案为 LCP(abacaba,abacaba)+LCP(abacaba,bacaba)+LCP(bacaba,abacaba)+LCP(bacaba,bacaba)=7+0+0+6=13。
- 在第二个查询中,考虑子串 s[1…7]=abacaba、s[2…7]=bacaba、s[3…7]=acaba 和 s[7…7]=a。该查询的答案为 LCP(abacaba,a)+LCP(bacaba,a)+LCP(acaba,a)=1+0+1=2。
- 在第三个查询中,将 s[1…7]=abacaba 与所有后缀进行比较。答案为所有非零值之和:LCP(abacaba,abacaba)+LCP(abacaba,acaba)+LCP(abacaba,aba)+LCP(abacaba,a)=7+1+3+1=12。
- 在第四个查询中,考虑子串 s[1…7]=abacaba 和 s[5…7]=aba。该查询的答案为 LCP(abacaba,abacaba)+LCP(abacaba,aba)+LCP(aba,abacaba)+LCP(aba,aba)=7+3+3+3=16。
输入解题思路,AI测评打分。不知道怎么写?