#HK4163. 「JOI Open 2024」考试 2

「JOI Open 2024」考试 2

题目描述

译自 JOI Open 2024 T1 「試験 2 / Examination 2」

JOI 君就读的 IOI 高中计划在近期举行期末考试。考试的内容是能否正确地计算出 IOI 高中自己制定的规则下的 IOI 函数的值。IOI 函数是指由以下 6 种规则中的任意一种得到的字符串,它们可以把 11 到 10910^{9} 之间的整数对应到 True 或 False 的真假值。

  1. 把 11 到 10910^{9} 之间的整数 aa 写成 [a]\texttt{[a]} 的形式,就是一个 IOI 函数(其中,a\texttt{a} 是用十进制表示 aa 得到的字符串)。这个 IOI 函数把大于等于 aa 的整数对应到 True,把小于 aa 的整数对应到 False。
  2. 如果 f\texttt{f} 是一个 IOI 函数,那么 (f)\texttt{(f)} 也是一个 IOI 函数。这个 IOI 函数把 f\texttt{f} 对应到 True 的整数对应到 True,把 f 对应到 False 的整数对应到 False。
  3. 如果 f\texttt{f} 是一个 IOI 函数,那么 !f\texttt{!f} 也是一个 IOI 函数。这个 IOI 函数把 f\texttt{f} 对应到 True 的整数对应到 False,把 f\texttt{f} 对应到 False 的整数对应到 True。
  4. 如果 f\texttt{f} 和 g\texttt{g} 都是 IOI 函数,那么 \texttt{f&g} 也是一个 IOI 函数。这个 IOI 函数把 f\texttt{f} 和 g\texttt{g} 都对应到 True 的整数对应到 True,把其他的整数对应到 False。
  5. 如果 f\texttt{f} 和 g\texttt{g} 都是 IOI 函数,那么 \texttt{f^g} 也是一个 IOI 函数。这个 IOI 函数把 f\texttt{f} 和 g\texttt{g} 中只有一个对应到 True 的整数对应到 True,把其他的整数对应到 False。
  6. 如果 f\texttt{f} 和 g\texttt{g} 都是 IOI 函数,那么 f|g\texttt{f|g} 也是一个 IOI 函数。这个 IOI 函数把 f\texttt{f} 和 g\texttt{g} 中至少有一个对应到 True 的整数对应到 True,把其他的整数对应到 False。

如果一个 IOI 函数可以由多个规则得到,那么就按照规则的编号越大越优先的原则来确定 IOI 函数对应的真假值。例如,对于 \texttt{[1]&[2]|[3]},就按照规则 6 来处理,把 \texttt{f=[1]&[2]},g=[3]\texttt{g=[3]},而不是按照规则 4 来处理,把 f=[1]\texttt{f=[1]},g=[2]|[3]\texttt{g=[2]|[3]}。另外,对于规则 4,5,6,要尽量让 f\texttt{f} 的长度更长。例如,对于 \texttt{[4]^[5]^[6]},就按照规则 5 来处理,把 \texttt{f=[4]^[5]},g=[6]\texttt{g=[6]},而不是按照规则 5 来处理,把 f=[4]\texttt{f=[4]},\texttt{g=[5]^[6]}。

JOI 君为了考试复习,准备了一个长度为 NN 的 IOI 函数 SS,想要练习计算出 QQ 个整数 X1,X2,…,XQX_{1}, X_{2}, \ldots, X_{Q} 对应的这个函数的真假值。于是,他请擅长处理 IOI 函数的你来帮他做一个参考答案。

给定 N,Q,SN, Q, S 和 X1,X2,…,XQX_{1}, X_{2}, \ldots, X_{Q},请你编写一个程序,求出 JOI 君准备的 IOI 函数对 X1,X2,…,XQX_{1}, X_{2}, \ldots, X_{Q} 的真假值。

输入格式

第一行两个整数 N,QN,Q。

接下来一行,包含一个字符串 SS。

接下来 QQ 行,每行一个整数 XiX_i。

输出格式

输出 QQ 行。第 i (1≤i≤Q)i\ (1 \leq i \leq Q) 行输出 JOI 君准备的 IOI 函数对整数 XiX_{i} 的真假值。

15 5
(![2]|[3])&![4]
1
2
3
4
5
True
False
True
False
False

按照问题文中的规则得到 SS 的过程中出现的一部分 IOI 函数,它们对各个 Xi(1≤i≤Q)X_{i}(1 \leq i \leq Q) 的真假值如下表所示。

XiX_{i} ![2]\texttt{![2]} [3]\texttt{[3]} ![2]|[3]\texttt{![2]|[3]} ![4]\texttt{![4]} \texttt{(![2]|[3])&![4]}
11 True False True True True
22 False False False True False
33 False True True True True
44 False True True False False
55 False True True False False
20 4
(!![23])^((([116])))
54
1
200
89
True
False
False
True

这组样例满足子任务 3,6,73,6,7 的限制。

32 4
[2]|[5]&[1]|(([1000000000])|[7])
4
10
6
1
True
True
True
False

这组样例满足子任务 3,4,6,73,4,6,7 的限制。

数据范围与提示

对于所有输入数据,满足:

  • 1≤N≤1061 \leq N \leq 10^6
  • 1≤Q≤2×1051 \leq Q \leq 2\times 10^5
  • SS 是一个长度为 NN 的 IOI 函数
  • 1≤Xi≤109 (1≤i≤Q)1 \leq X_{i} \leq 10^{9}\ (1 \leq i \leq Q)
  • N,QN, Q 和 Xi (1≤i≤Q)X_{i}\ (1 \leq i \leq Q) 都是整数

详细子任务附加限制及分值如下表所示。

子任务 附加限制 分值
11 SS 不包含 \texttt{&} 和 |\texttt{|} 55
22 Q=1Q=1 2020
33 N≤10000N \leq 10000 1010
44 SS 不包含 ! 和 ^ 66
55 SS 在得到的过程中,如果应用了规则 4 或规则 6,那么 f\texttt{f} 和 g\texttt{g} 中至少有一个是由规则 1 得到的 IOI 函数 1212
66 N≤4×105N \leq 4\times 10^5 2020
77 无附加限制 2727