#P12691. [集训队互测2025day16]数位 DP

[集训队互测2025day16]数位 DP

题目背景

小 L 曾经出了这样一个题:

给定长度为 44 的整数序列 cc,求是否存在长度为 44 的整数序列 aa 满足 0aici0\le a_i\le c_i 且 $(((a_1\text{ and }a_2)\text{ xor }a_3)\text{ or }a_4=m$。

小 C 看到后觉得这个数位 DP 题非常板,很没意思。小 L 又修改上述问题的位运算的顺序,出了很多个题。

小 C 忍不了了:“你能不能别再出模板数位 DP 题了?”

小 L 只能把这一堆题交给了你。不过为了增加挑战性,现在你需要对所有可能的 cic_i 计算出答案并求和。

题目描述

给定长度为 n1n-1 的字符串 ss,对于一个长度为 nn 的非负整数序列 aa,定义其生成序列 bb 为:

  • b1=a1b_1=a_1
  • 对于 i>1i>1
    • si1=As_{i-1}=\verb!A!,则 bi=bi1 and aib_i=b_{i-1}\text{ and }a_i
    • si1=Os_{i-1}=\verb!O!,则 bi=bi1 or aib_i=b_{i-1}\text{ or }a_i
    • si1=Xs_{i-1}=\verb!X!,则 bi=bi1 xor aib_i=b_{i-1}\text{ xor }a_i

给定非负整数 kk。接下来 qq 组询问,每次给定一个 mm,求有多少长度为 nn 的整数序列 cc 满足:

  • 对于 1in1\le i\le n,满足 0ci<2k0\le c_i<2^k
  • 存在至少一个长度为 nn 的整数序列 aa 满足:
    • 对于 1in1\le i\le n,满足 0aici0\le a_i\le c_i
    • 对于 aa 的生成序列 bb,满足 bn=mb_n=m

由于答案很大,你只需要输出答案对 2322^{32} 取模的结果。

输入格式

第一行三个整数 n,k,qn,k,q

第二行一个长度为 n1n-1 的字符串 ss

接下来 qq 行,每行一个询问的 mm

输出格式

输出 qq 行,每行一个非负整数,表示答案对 2322^{32} 取模的结果。

输入输出样例 #1

输入 #1

3 1 2
OA
0
1

输出 #1

8
3

输入输出样例 #2

输入 #2

4 2 2
XOA
1
2

输出 #2

189
112

输入输出样例 #3

输入 #3

4 2 3
XAO
1
2
3

输出 #3

237
176
143

输入输出样例 #4

输入 #4

10 10 3
AOOXOAOXA
749
666
135

输出 #4

4239261913
1948492800
2799056799

说明/提示

本题使用捆绑测试,你只有通过一个子任务的所有测试点,才能获得这个子任务的分数

子任务编号 nn\le kk\le qq\le 特殊性质 分值
11 44 55 200200 1010
22 2020 88 2020
33 200200 1616 11
44 200200
55 3030 11 popcount(m)16\text{popcount}(m)\le 16
66 10001000 10001000 ss 不包含 A\verb!A!
77 5050 5050
88 10001000 11
99 200200 200200
1010 10001000 10001000

对于 100%100\% 的数据,2n10002\le n\le 10001q10001\le q\le 10001k301\le k\le 300m<2k0\le m<2^k