#HK4163. 「JOI Open 2024」考试 2

「JOI Open 2024」考试 2

题目描述

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

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

  1. 1110910^{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, SX1,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 (1iQ)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(1iQ)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 的限制。

数据范围与提示

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

  • 1N1061 \leq N \leq 10^6
  • 1Q2×1051 \leq Q \leq 2\times 10^5
  • SS 是一个长度为 NN 的 IOI 函数
  • 1Xi109 (1iQ)1 \leq X_{i} \leq 10^{9}\ (1 \leq i \leq Q)
  • N,QN, QXi (1iQ)X_{i}\ (1 \leq i \leq Q) 都是整数

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

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