Logo 邂逅编程之美

UOJ

时间限制:2 s 空间限制:1024 MB
Statistics

题目背景

后缀仙人掌基于后缀 trie,将每个非叶子节点都与一个儿子合并,所形成的连接体称为树枝。

令 $v$ 为文本串 $T$ 的后缀 trie $STr(T)$ 的一个节点,满足 $v$ 是根或者 $v$ 不是其父亲 $w$ 的第一个儿子。那么文本串 $T$ 的后缀仙人掌 $SC(T)$ 中有树枝 $s$ 恰好包含从 $v$ 到其下第一个叶子 $u$ 路径上的所有节点。

——《Suffix Cactus》,2014,王悦同、徐毅、徐子涵

题目描述

定义一个字符串的周期是一个数 $p\in [1,len]$ 满足 $str_i=str_{i+p}, i\in[1,len-p]$。

给定一个长为 $n$ 的字符串 $d$,按以下规则生成 $n+1$ 个字符串:

  • $S_0$ 为空串
  • 若 $d_i$ 为小写字母,$S_i=d_i+S_{i-1}$
  • 若 $d_i$ 为大写字母,设其对应的小写字母为 $c_i$,$S_i=S_{i-1}+c_i$

此处的 + 表示拼接。

给你一个长度为 $m$ 的序列 $p$,你需要回答 $q$ 次询问。每次询问给出 $k,l,r$,你需要找到 $p_l,p_{l+1},...,p_{r-1},p_r$ 中最小的数,使得该数为 $S_k$ 的一个周期。如果不存在输出 $-1$。

你不一定需要使用题目背景中的算法。

输入格式

第一行一个数 $n$ 表示字符串长度。

第二行一个长为 $n$ 的仅包含大小写字母的字符串 $d$。

第三行一个数 $m$ 表示序列长度。

第四行 $m$ 个整数表示序列 $p$。

第五行一个数 $q$ 表示询问个数。

接下来 $q$ 行,每行三个整数 $k,l,r$ 表示一组询问。

输出格式

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

样例

样例输入
7
AABAAba
9
4 3 2 1 7 5 3 6 1
6
1 4 4
2 1 4
2 1 3
3 3 5
5 4 7
7 8 9
样例输出
1
1
2
-1
3
6

数据范围与约定

对于所有数据,$1\le n,m,q\le 5\times 10^5,1\le p_i,k_i\le n,1\le l\le r\le m$

Subtask 1(20分):$n,m,q\le 2000$。

Subtask 2(20分):$n\le2000,m,q\le 5\times 10^5$

Subtask 3(60分):无特殊限制

大样例