#1032. 1-03G. JM的毒瘤题

内存限制:512 MiB 时间限制:750 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: JM233333

题目描述

回文串是一种“对称”的字符串,若字符串 ss 是一个回文串,则 ss 满足 s=reverse(s)s = reverse(s) ,其中 reverse(s)reverse(s) 表示字符串 ss 的翻转。

cyy非常喜欢回文串,今天他掏出了一个构造回文串的算法:

  1. 在第 11 步,字符串为 p1=c1p_1 = c_1

  2. 在第 kk 步,字符串为 pk=pk1+ck+pk1p_k = p_{k-1} + c_k + p_{k-1} ,其中 ++ 表示字符串之间的连接。

上述算法中的 cic_i 表示一个未知字符,这样的字符一共有 kk 种,分别为 c1,c2,...,ckc_1, c_2, ..., c_k

就在cyy开心地构造着回文串时,毒瘤的JM想起了最长公共子串问题,和这个回文串结合了一下,弄出了一道毒瘤(其实并不)题:

为便于描述,规定 s[l, r]s[l,\ r] 表示 ss 的子串 slsl+1...srs_{l}s_{l+1}...s_{r} ,其中 sis_i 表示 ss 的第 ii 个字符,且 i[1, s]i \in [1,\ |s|],其中 s|s| 表示 ss 的长度。例如 s=s = abcde,则 s[2, 3]=s[2,\ 3] = bc

给定 qq 次询问,每次给定五个正整数 k, l1, r1, l2, r2k,\ l_1,\ r_1,\ l_2,\ r_2 ,求 pkp_k 的两个子串 pk[l1, r1]p_k[l_1,\ r_1]pk[l2, r2]p_k[l_2,\ r_2] 的最长公共子串的长度是多少。

例如 k=3k = 3 ,则 p3=p_3 = abacaba,那么:

p3[1, 2]p_3[1,\ 2]p3[4, 5]p_3[4,\ 5] 的最长公共子串为a,其长度为 11

p3[1, 4]p_3[1,\ 4]p3[3, 6]p_3[3,\ 6] 的最长公共子串为abac,其长度为 22

输入格式

第一行一个正整数 qq ,表示询问次数。

接下来 qq 行,每行五个正整数 k, l1, r1, l2, r2k,\ l_1,\ r_1,\ l_2,\ r_2 ,表示一次询问。

输出格式

对于每次询问,输出一行一个非负整数表示答案。

样例

样例输入

3
3 1 2 4 5
3 1 4 3 6
3 1 1 2 2

样例输出

1
2
0

数据范围与提示

1q1051 \le q \le 10^5

1k301 \le k \le 30

1liri2k1, i[1, 2]1 \le l_i \le r_i \le 2^k - 1,\ i \in [1,\ 2]