#P16108. [2026年山东集训一轮]keys门锁

    ID: 15319 传统题 1500ms 1024MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>CF3000组合数学分块ST表数据结构

[2026年山东集训一轮]keys门锁

题目描述

给定一个长度为 nn、字符集为 K,D 的字符串 ss。保证所有测试点中,字符串 ss 均存在特殊性质限制,详见「数据范围」。

ss 的一个长度为 mm 的子串

t1t2tm,t_1t_2\ldots t_m,

考虑它的一个标号 c1,c2,,cmc_1,c_2,\ldots,c_m,满足:

  • 对所有 1im1\le i\le m,有 1cin1\le c_i\le n,且 ciZc_i\in\mathbb Z
  • 二元组 (ti,ci)(t_i,c_i) 两两不同。也就是说,若 iji\ne jti=tjt_i=t_j,则 cicjc_i\ne c_j

有一个小人,从位置 11 游行到位置 mm,初始有无穷的金币。当访问到第 ii 个位置时:

  • tit_iK,他将领取一把类型为 cic_i 的钥匙;
  • tit_iD,他需要开一扇类型为 cic_i 的门,也就是需要手里有类型为 cic_i 的钥匙。若有该类型钥匙,则可以直接通过;否则需要求救大神,花费一个金币。

定义合法标号 c1mc_{1\sim m}代价为最少需要花费的金币数。

fmin(t1m)f_{\min}(t_{1\sim m}) 为对所有合法标号 c1mc_{1\sim m},其代价的最小值。可以证明,至少存在一个合法标号方案。小人将能取得 fmin(t1m)f_{\min}(t_{1\sim m}) 的合法标号数量记为 f(t1m)f(t_{1\sim m})

现在有 qq 次询问。第 ii 次询问给出一个区间 [li,ri][l_i,r_i],请你求出

f(slisli+1sri)f(s_{l_i}s_{l_i+1}\ldots s_{r_i})

998244353998244353 取模后的结果。

输入格式

从文件 keys.in 中读入数据。

本题包含多组测试数据。

输入第一行包含两个非负整数 c,Tc,T,分别表示测试点编号与测试数据组数。c=0c=0 表示该测试点为样例。

接下来依次输入每组测试数据。对于每组测试数据:

  • 第一行两个正整数 n,qn,q
  • 第二行一个长度为 nn 的字符串 ss
  • 接下来 qq 行,每行两个整数 li,ril_i,r_i,表示一次询问。

输出格式

输出到文件 keys.out 中。

对于每组测试数据,输出 qq 行。第 ii 行输出一个非负整数,表示对应询问的答案,对 998244353998244353 取模。

样例 1 输入

0 1
4 3
KKDD
1 3
3 4
1 4

样例 1 输出

24
12
24

样例 1 解释

第二组询问的子串只有门没有钥匙,所以不管怎样标号,小人都需要求救大神两次,因此总方案数是 4×3=124\times 3=12

第一组询问中,一种标号方式是 (c1,c2,c3)=(1,2,3)(c_1,c_2,c_3)=(1,2,3),需要求救一次;但它不是最优的,因为例如 (c1,c2,c3)=(1,2,2)(c_1,c_2,c_3)=(1,2,2) 时不需要求救。

附加样例

  • 样例 2:见选手目录下的 keys/keys2.inkeys/keys2.ans,满足测试点 4 的约束条件。
  • 样例 3:见选手目录下的 keys/keys3.inkeys/keys3.ans,满足测试点 5 的约束条件。
  • 样例 4:见选手目录下的 keys/keys4.inkeys/keys4.ans,满足测试点 12、14 的约束条件。

数据范围

对于每组测试数据,均有:

  • 1T31\le T\le 3
  • 1n3×1051\le n\le 3\times 10^51q5×1051\le q\le 5\times 10^5
  • 1lirin1\le l_i\le r_i\le n
  • 对所有 1in1\le i\le nsis_iKD 之一。
测试点编号 nn\le n\sum n\le qq\le q\sum q\le 特殊性质
1, 2 55 1515 5050 150150 C
3, 4 1818 5050 500500 10310^3
5, 6 5×1035\times 10^3 10410^4 5×1035\times 10^3 10410^4 B
7 ~ 10 C
11 ~ 14 10510^5 2×1052\times 10^5 10510^5 2×1052\times 10^5
15, 16 1.5×1051.5\times 10^5 3×1053\times 10^5 2.5×1052.5\times 10^5 5×1055\times 10^5 B
17, 18 C
19, 20 3×1053\times 10^5 5×1055\times 10^5 10610^6

特殊性质如下:

  • 特殊性质 A:奇数编号测试点满足:对所有 1iq1\le i\le q,若 li<ril_i<r_i,则 fmin(sliri)=0f_{\min}(s_{l_i\sim r_i})=0
  • 特殊性质 B:保证 sisi+1s_i\ne s_{i+1}
  • 特殊性质 C:保证 ss2n2^n 个合法字符串中等概率随机生成。

请注意:所有测试点均存在特殊性质。本题输入输出量较大,建议使用较快的输入输出方式。

难度评定

  • 估计难度:NOI Day2 T1 ~ T2 难度,CF 约 2900 ~ 3100
  • 评定理由:最小代价本质上与序列中 K 与之后 D 的最大匹配有关,但本题还要求统计所有达到最小代价的合法标号数,并支持大规模区间询问。计数部分需要组合分析,查询部分需要结合特殊性质 A/B/C 设计不同策略,整体明显高于普通括号匹配或区间计数题。