P12494 [集训队互测 2024] 数位 DP
题目背景
小 L 曾经出了这样一个题:
> 给定长度为 $4$ 的整数序列 $c$,求是否存在长度为 $4$ 的整数序列 $a$ 满足 $0\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 只能把这一堆题交给了你。不过为了增加挑战性,现在你需要对所有可能的 $c_i$ 计算出答案并求和。
题目描述
给定长度为 $n-1$ 的字符串 $s$,对于一个长度为 $n$ 的非负整数序列 $a$,定义其生成序列 $b$ 为:
- $b_1=a_1$;
- 对于 $i>1$:
- 若 $s_{i-1}=\verb!A!$,则 $b_i=b_{i-1}\text{ and }a_i$。
- 若 $s_{i-1}=\verb!O!$,则 $b_i=b_{i-1}\text{ or }a_i$。
- 若 $s_{i-1}=\verb!X!$,则 $b_i=b_{i-1}\text{ xor }a_i$。
给定非负整数 $k$。接下来 $q$ 组询问,每次给定一个 $m$,求有多少长度为 $n$ 的整数序列 $c$ 满足:
- 对于 $1\le i\le n$,满足 $0\le c_i
输入格式
第一行三个整数 $n,k,q$。
第二行一个长度为 $n-1$ 的字符串 $s$。
接下来 $q$ 行,每行一个询问的 $m$。
输出格式
输出 $q$ 行,每行一个非负整数,表示答案对 $2^{32}$ 取模的结果。
说明/提示
**本题使用捆绑测试,你只有通过一个子任务的所有测试点,才能获得这个子任务的分数**。
| 子任务编号 | $n\le$ | $k\le$ | $q\le$ | 特殊性质 | 分值 |
| :--------: | :----: | :----: | :----: | :------------------------: | :--: |
| $1$ | $4$ | $5$ | $200$ | 无 | $10$ |
| $2$ | $20$ | $8$ | $20$ | 无 | $10$ |
| $3$ | $200$ | $16$ | $1$ | 无 | $10$ |
| $4$ | $200$ | $16$ | $200$ | 无 | $10$ |
| $5$ | $200$ | $30$ | $1$ | $\text{popcount}(m)\le 16$ | $10$ |
| $6$ | $1000$ | $30$ | $1000$ | $s$ 不包含 $\verb!A!$ | $10$ |
| $7$ | $50$ | $30$ | $50$ | 无 | $10$ |
| $8$ | $1000$ | $30$ | $1$ | 无 | $10$ |
| $9$ | $200$ | $30$ | $200$ | 无 | $10$ |
| $10$ | $1000$ | $30$ | $1000$ | 无 | $10$ |
对于 $100\%$ 的数据,$2\le n\le 1000$,$1\le q\le 1000$,$1\le k\le 30$,$0\le m