#P12494. [集训队互测 2024] 数位 DP

[集训队互测 2024] 数位 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} 取模的结果。

3 1 2
OA
0
1
8
3
4 2 2
XOA
1
2
189
112
4 2 3
XAO
1
2
3
237
176
143
10 10 3
AOOXOAOXA
749
666
135
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