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

    ID: 14056 远端评测题 3000ms 512MiB 尝试: 0 已通过: 0 显示难度NOI/NOI+/CTS 上传者: 标签>集训队互测2024O2优化

[集训队互测 2024] 数位 DP

背景

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

给定长度为 44 的整数序列 cc,求是否存在长度为 44 的整数序列 aa 满足 0≤ai≤ci0\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 计算出答案并求和。

题目描述

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

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

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

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

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

输入格式

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

第二行一个长度为 n−1n-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

提示

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

子任务编号 n≤n\le k≤k\le q≤q\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\% 的数据,2≤n≤10002\le n\le 1000,1≤q≤10001\le q\le 1000,1≤k≤301\le k\le 30,0≤m<2k0\le m<2^k。