P17441 打字
题目描述
Igallta 和弥儿在玩游戏。
她们先约定好两个和游戏有趣程度有关的系数 $n$ 和 $m$,再约定好了一个字符串 $S$,该字符串只有可能出现字符串 $\Sigma=\texttt{abcdefghijklmnopqrstuvwxyz\_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789}$ 的前 $n$ 个字符。
露薇娅给她们带来了一个打字机,Igallta 作为打字的一方,而弥儿则作为控制打字机的一方。
打字机连接着一个显示器,Igallta 和弥儿都可以看到显示器上的字符串 $T$,表示 Igallta 打出的字符串。打字机有 $n+1$ 个按键。有 $n$ 个按键分别对应了 $\Sigma$ 的前 $n$ 个字符,称为字符键,按下字符键就会在 $T$ 的末尾出现该字符键对应的字符;另外 $1$ 个按键为删除键,按下删除键就会把 $T$ 的最后一个字符删除,如果 $T$ 已经为空串就不会发生任何事情。
仅仅是这样的话太没意思了,因此露薇娅把 $n$ 个字符键上面的字符消去,并且随机打乱,这样 Igallta 一开始就不知道按下一个字符键会在字符串 $T$ 后面出现什么字符,除非她按下这个字符键,这样她才能确定这个字符键对应了什么字符。
然而这样 Igallta 依然可以很快知道字符键对应的字符,因此 Igallta 每按下 $m$ 次**字符键**之后,弥儿就会把这 $n$ 个字符键再次随机打乱,这样 Igallta 就又不知道字符键对应的字符了。注意 Igallta 可以在任意时候按任意次删除键,这不会被计入按下字符键的次数。
特别地,当 Igallta 尝试按下一个字符键之后,弥儿可以任意决定这个字符键对应的字符,只要它不和之前 Igallta 获取到的信息矛盾,这点类似于自适应的交互库。
Igallta 可以在任意时候结束游戏,并计算她在本轮游戏的得分。但是当 Igallta 按下字符键和删除键的总次数达到 $79^{37^{77}}$ 次的时候,游戏将自动结束。如果最终她打出的字符串 $T$ 不是 $S$ 的一个子序列,那么她的得分为 $-80^{73^{75}}$,否则她的得分为字符串 $T$ 的长度。
Igallta 想要最大化自己的得分,而弥儿想要最小化 Igallta 的得分。弥儿作为“穿越时空的猎犬”,Igallta 作为新一代人工智能,她们都可以做出最正确的抉择。
现在露薇娅知道了 $n,m$ 和 $S$,她想知道双方都采取最优策略的情况下 Igallta 的最终得分。(容易证明在双方都采取最优策略的情况下 Igallta 的最终得分不会是 $-80^{73^{75}}$)
然而约定一次合理且有趣的游戏是很麻烦的,为了增加游戏的轮数,有时候 Igallta 和弥儿还会给出 $1\le l\le r\le|S|$(其中 $|S|$ 表示字符串 $S$ 的长度),并选出 $S$ 的一段子串 $S_{l\sim r}$ 进行游戏。即在计算分数时,如果 $T$ 不是 $S_{l\sim r}$ 的子序列,Igallta 的得分为 $-80^{73^{75}}$,否则 Igallta 的得分为 $|T|$。
**注意本题中字符串是从 $1$ 开始标号的。**
注:称 $T$ 是 $S$ 的子序列当且仅当删除 $S$ 某些位置的字符(可以不删除,也可以全部删除),并将剩下的字符按原顺序拼接可以得到 $T$,如 `aad`、`aaead`、`aadead` 都是 `aadead` 的子序列,而 `eda`、`aaaa`、`c` 不是 `aadead` 的子序列。依照定义可知,空串是所有字符串的子序列。
$S_{l\sim r}$ 是指字符串 $S$ 的第 $l$ 个字符到第 $r$ 个字符按原顺序拼接得到的字符串。
输入格式
第一行两个正整数 $Tid,Turn$,分别表示测试点编号、数据组数。对于样例,$Tid$ 表示其满足第 $Tid$ 个测试点的限制。
接下来有 $Turn$ 组数据,对于每组数据,第一行有三个正整数 $n,m,|S|$,和一个非负整数 $q$,第二行有一个长度为 $|S|$ 的仅包含 $\Sigma$ 的前 $n$ 个字符的字符串 $S$,表示初始的游戏中约定好的字符串。接下来有 $q$ 行,每行两个正整数 $l,r$,表示一次询问。
输出格式
对于每组数据输出一行 $q+1$ 个非负整数,第 $1$ 个数表示初始的游戏中,双方都采取最优策略时 Igallta 的最终得分,第 $i$($i>1$)个数表示在第 $i-1$ 次询问选出的子串中进行游戏,双方都采取最优策略时 Igallta 的最终得分。
说明/提示
对于所有数据,保证 $1\le n,m\le 63,1\le Turn\le1000,0\le q \le 30$,保证 $1\le l\le r\le|S|\le10^6$,保证 $\sum|S|\le 2\times 10^6$。
| 测试点编号 | $Turn\le$ | $n\le$ | $m\le$ | $\|S\|\le$ | $\sum\|S\|\le$ | $q\le$ | 特殊性质 | 时间限制 |
| :--------: | :-------: | :----: | :----: | :--------: | :------------: | :----: | :---------: | ----------- |
| $1$ | $300$ | $16$ | $63$ | $10^5$ | $3\times10^5$ | $0$ | $\text{A}$ | $1\text{s}$ |
| $2$ | $300$ | $16$ | $1$ | $10^5$ | $3\times10^5$ | $0$ | 无 | $1\text{s}$ |
| $3$ | $39$ | $3$ | $2$ | $3$ | $102$ | $0$ | $\text{BD}$ | $1\text{s}$ |
| $4$ | $81$ | $3$ | $2$ | $4$ | $324$ | $0$ | $\text{BD}$ | $1\text{s}$ |
| $5$ | $243$ | $3$ | $2$ | $5$ | $1215$ | $0$ | $\text{BD}$ | $1\text{s}$ |
| $6$ | $300$ | $3$ | $2$ | $10$ | $3000$ | $0$ | $\text{B}$ | $1\text{s}$ |
| $7\sim10$ | $300$ | $3$ | $2$ | $10^5$ | $3\times10^5$ | $0$ | $\text{B}$ | $1\text{s}$ |
| $11$ | $300$ | $5$ | $63$ | $10^5$ | $3\times10^5$ | $0$ | 无 | $1\text{s}$ |
| $12$ | $300$ | $10$ | $63$ | $10^5$ | $3\times10^5$ | $0$ | 无 | $1\text{s}$ |
| $13\sim14$ | $300$ | $16$ | $63$ | $10^5$ | $3\times10^5$ | $0$ | 无 | $1\text{s}$ |
| $15\sim16$ | $1000$ | $63$ | $63$ | $10^6$ | $2\times10^6$ | $0$ | 无 | $4\text{s}$ |
| $17\sim18$ | $1000$ | $63$ | $63$ | $10^6$ | $2\times10^6$ | $30$ | $\text{C}$ | $4\text{s}$ |
| $19\sim20$ | $1000$ | $63$ | $63$ | $10^6$ | $2\times10^6$ | $30$ | 无 | $8\text{s}$ |
性质 $\text{A}$:保证 $m\ge n$。
性质 $\text{B}$:保证 $n=3$,并且 $m=2$。
性质 $\text{C}$:保证数据以下述方式随机生成。
先确定 $Tid$ 和 $Turn$,接下来随机生成 $Turn$ 组数据。$Turn$ 组数据的生成都是相互独立的。
在每组测试数据中,先确定 $n,m,|S|,q$,而后字符串 $S$ 在所有可能的字符串中均匀随机生成,并且每组询问的 $l,r$ 也在所有可能的 $l,r$ 中均匀随机生成。字符串 $S$ 与每组询问的 $l,r$ 的生成也都是相互独立的。
性质 $\text{D}$:该测试点的输入文件下发,在附件下载处可找到该测试点的输入文件 `type*.in`。
输入文件最大大约有 $2.1\text{MB}$,请使用较快的输入方式。在下发文件中包含了 `fastread.cpp`,可以直接使用。
请选手注意**常数优化**。
**样例解释:**
对于第五组样例表示的游戏,以下是可能的一种游戏过程:
1. Igallta 按下第一个字符键,得到 `c`。
2. Igallta 按下一次删除键,并按下第二个字符键,得到 `b`。弥儿把按键重新打乱。
3. Igallta 按下第二个字符键,得到 `c`。
4. Igallta 按下第三个字符键,得到 `a`。弥儿把按键重新打乱。此时 $T=\texttt{bca}$。
5. Igallta 按下第一个字符键,得到 `c`。
6. Igallta 按下第三个字符键,得到 `b`。弥儿把按键重新打乱。
7. Igallta 结束游戏,此时 $T=\texttt{bcacb}$,她的得分为 $5$。
对于第五组样例的第一个询问,以下是可能的一种游戏过程:
1. Igallta 按下第一个字符键,得到 `b`。
2. Igallta 按下第二个字符键,得到 `a`。弥儿把按键重新打乱。
3. 此时 $T=\texttt{ba}$,不是 $S_{1\sim3}=\texttt{abc}$ 的子序列,如果此时 Igallta 选择结束游戏,她的得分将是 $-80^{73^{75}}$。于是她按下一次删除键,此时 $T=\texttt{b}$。
4. Igallta 按下第一个字符键,得到 `a`。
5. Igallta 按下一次删除键,此时 $T=\texttt{b}$。
6. Igallta 按下第三个字符键,得到 `b`。弥儿把按键重新打乱。
7. Igallta 按下一次删除键并结束游戏,此时 $T=\texttt{b}$,她的得分为 $1$。
**评测限制:**
时间限制:$1\sim 8\text{s}$。
空间限制:$1024\text{MB}$。
评测模式:开启 $\text{O2}$ 优化。