luogu#P12024. [USACO25OPEN] It's Mooin' Time III B

[USACO25OPEN] It's Mooin' Time III B

题目描述

Elsie 正在试图向 Bessie 描述她最喜欢的 USACO 竞赛,但 Bessie 很难理解为什么 Elsie 这么喜欢它。Elsie 说「现在是哞哞时间!谁想哞哞?请,我只想参加 USACO」。

Bessie 仍然不理解,于是她将 Elsie 的描述转文字得到了一个长为 NN3N1053 \leq N \leq 10^5)的字符串,包含小写字母字符 s1s2sNs_1s_2 \ldots s_N。Elsie 认为一个包含三个字符的字符串 tt 是一个哞叫,如果 t2=t3t_2 = t_3t2t1t_2 \neq t_1

一个三元组 (i,j,k)(i, j, k) 是合法的,如果 i<j<ki < j < k 且字符串 sisjsks_i s_j s_k 组成一个哞叫。对于该三元组,FJ 执行以下操作计算其值:

  • FJ 将字符串 ss 在索引 jj 处弯曲 90 度
  • 该三元组的值是 Δijk\Delta ijk 的面积的两倍。

换句话说,该三元组的值等于 (ji)(kj)(j-i)(k-j)

Bessie 向你进行 QQ1Q31041 \leq Q \leq 3 \cdot 10^4)个查询。在每个查询中,她给你两个整数 llrr1lrN1 \leq l \leq r \leq Nrl+13r-l+1 \ge 3),并询问满足 lil \leq ikrk \leq r 的所有合法三元组 (i,j,k)(i, j, k) 的最大值。如果不存在合法的三元组,输出 1-1

注意这个问题涉及到的整数可能需要使用 64 位整数类型(例如,C/C++ 中的 long long)。

输入格式

输入的第一行包含两个整数 NNQQ。 以下一行包含 s1s2,sNs_1 s_2, \ldots s_N

以下 QQ 行每行包含两个整数 llrr,表示每个查询。

输出格式

对于每一个查询输出一行,包含对于该查询的答案。

12 5
abcabbacabac
1 12
2 7
4 8
2 5
3 10
28
6
1
-1
12

提示

样例解释:对于第一个查询,(i,j,k)(i,j,k) 必须满足 1i<j<k121 \le i < j < k \le 12。可以证明,对于某个合法的 (i,j,k)(i,j,k)Δijk\Delta ijk 的最大面积在 i=1i=1j=8j=8 以及 k=12k=12 时取到。注意 s1s8s12s_1 s_8 s_{12} 是字符串 "acc",根据前述定义是一个哞叫。Δijk\Delta ijk 的直角边长为 7744,从而它的面积的两倍将等于 2828。 对于第三个查询,(i,j,k)(i,j,k) 必须满足 4i<j<k84 \le i < j < k \le 8。可以证明,对于某个合法的 (i,j,k)(i,j,k)Δijk\Delta ijk 的最大面积在 i=4i=4j=5j=5 以及 k=6k=6 时取到。

对于第四个查询,不存在满足 2i<j<k52 \le i < j < k \le 5(i,j,k)(i,j,k) 使得 sisjsks_i s_j s_k 是一个哞叫,所以该查询的输出为 1-1

  • 测试点 232\sim3N,Q50N,Q\le 50
  • 测试点 464\sim6Q=1Q=1,唯一的询问满足 l=1l=1r=Nr=N
  • 测试点 7117\sim 11:没有额外限制。