luogu#P6385. 『MdOI R2』Little Goth

    ID: 10400 远端评测题 1000~3000ms 500MiB 尝试: 1 已通过: 0 难度: 7 上传者: 标签>字符串动态规划dp贪心后缀自动机SAMO2优化广度优先搜索BFSLink-Cut TreeLCT块状链表块状数组分块后缀树洛谷月赛

『MdOI R2』Little Goth

题目背景

小 M 和小 B 是一对好朋友,她们很喜欢爬山。

题目描述

山可以抽象为一个长为 nn 的字符串 SS,串中仅包含小写字母。

对于一个字符串 SS,我们定义 S|S| 表示串的长度,SLRS_{L\ldots R} 表示由 SS 中从左往右数,第 LL 个字符到第 RR 个字符依次连接形成的字符串。

小 M 一开始的位置是 ii,她想要到达位置在 kk 处的山顶,而小 B 则要帮助她。为此,她们需要进行一系列操作。

她们必须在所有操作之前使用一次位于 pp 处的传送法阵,通过施展法术,可以使小 B 的位置变为任意满足 jij \geq iSij=Spp+(ji)S_{i \ldots j} = S_{p \ldots p + (j-i)}jj。但同时,她们需要付出 njn-j 的代价。保证这样的 jj 存在。

之后,假设小 M ,小 B 的位置分别为 iijj,她们可以任意次进行下列操作中的一种:

  • 让小 M 爬,即令 i=i+1i=i+1i=i1i = i-1。如果这一步操作之后 i>ji>j,则 令 j=ij=i

  • 让小 B 爬,即令 j=j+1j=j+1j=j1j=j-1。如果这一步操作之后 i>ji>j,则令 i=ji=j

  • 使用螺旋升天,具体而言,选择两个下标 llrr,满足 Slr=SijS_{l \ldots r} = S_{i \ldots j},然后令 i=l,j=ri=l,j=r

出于某些原因,任何一次操作结束后,需要保证 1i,jn1 \leq i , j \leq n。进行一次上述任意一种操作,都需要付出 11 的代价。

爬山是很累的,因此她们想知道,至少需要付出多少代价才能让小 M 到达山顶,也就是让 i=ki=k。又因为她们很喜欢爬山,她们有很多组询问要问你。

输入格式

第一行两个整数,nnqq,表示串 SS 的长度和询问的个数。

第二行一个长度为 nn 的字符串 SS,仅包含小写字母。

接下来 qq 行,每行三个整数 i,pi,pkk,表明小 M 的位置,传送法阵位置和山顶的位置。

输出格式

qq 行,第 ii 行一个整数,表示对于第 ii 个询问给定的 i,pi,pkk,至少需要付出多少代价,才能让小 M 到达山顶,也就是,让小 M 的位置 i=ki=k

8 2
dacdaaaa
5 8 1
1 4 5
5
8

提示

【帮助与提示】

为方便选手测试代码,本题额外提供一组附加样例供选手使用。

样例输入 样例输出


【样例解释】

对于样例的第一组询问,使用传送法术时,只能令 j=5j=5,付出 85=38-5=3 的代价。之后,首先使用一次第三种操作,选择 l=2,r=2l=2,r=2,令 i=l,j=ri=l,j=r,然后使用一次第一种操作,令 i1i-1,即可使 i=ki=k,一共付出 55 的代价。

对于第二组询问,可以选择 j=2j=2,付出 82=68-2=6 的代价,然后使用一次第三种操作,选取 l=4,r=5l=4,r=5 并使 i=l,j=ri=l,j=r,然后进行一次第一种操作,令 i+1i+1 即可使 i=ki=k。一共付出 88 的代价。


【数据范围】

本题采用捆绑测试。

对于全部数据,保证 1n,q3×1041 \leq n,q \leq 3\times 10^4SS 中仅包含小写字母。

子任务编号 nn\leq qq \leq 特殊性质 分值 时间限制
Subtask 1 1515 33 1s
Subtask 2 8080 1414
Subtask 3 2×1042 \times 10^4 SS 中仅包含a 88 3s
Subtask 4 S1S_1 77
Subtask 5 400400 99 1s
Subtask 6 2×1042\times 10^4 2×1042 \times 10^4 所有询问的 kk 相同 1010 3s
Subtask 7 10310^3 2s
Subtask 8 1.5×1041.5 \times 10^4 1111 3s
Subtask 9 3×1043 \times 10^4 2828

性质 S1S_1 是,对于给定的 pp,满足条件的 jj 唯一。