#P10626. [JOI Open 2024] 考试 2

[JOI Open 2024] 考试 2

题目描述

JOI 君在 IOI 高中上学,期末考试即将来临。考试的内容是计算 IOI 函数。IOI 函数是将 [1,109][1,10^9] 之间的整数映射到布尔值(即 True/False\texttt{True}/\texttt{False})的函数。IOI 函数可以从以下六条 IOI 高中规定的规则中构造:

  1. aa[1,109][1,10^9] 之间的整数,则 [a]\texttt{[a]} 是一个 IOI 函数。它将不小于 aa 的整数映射成 True\texttt{True},将小于 aa 的整数映射成 False\texttt{False}

  2. f\texttt{f} 为 IOI 函数,则 (f)\texttt{(f)} 是一个 IOI 函数,它的映射规则与 f\texttt{f} 的映射规则相同。

  3. f\texttt{f} 为 IOI 函数,则 !f\texttt{!f} 是一个 IOI 函数。设 xx 为整数,若 f\texttt{f}xx 映射为 True\texttt{True},则 !f\texttt{!f}xx 映射为 False\texttt{False};否则 !f\texttt{!f}xx 映射为 True\texttt{True}

  4. f,g\texttt{f},\texttt{g} 为 IOI 函数,则 f&g\texttt{f\&g} 也是一个 IOI 函数。设 xx 为整数,则 f&g\texttt{f\&g}xx 映射为 True\texttt{True},当且仅当 f,g\texttt{f},\texttt{g} 都将 xx 映射为 True\texttt{True}

  5. f,g\texttt{f},\texttt{g} 为 IOI 函数,则 f ˆg\texttt{f\^ g} 也是一个 IOI 函数。设 xx 为整数,则 f ˆg\texttt{f\^ g}xx 映射为 True\texttt{True},当且仅当 f,g\texttt{f},\texttt{g} 中恰好有一个将 xx 映射为 True\texttt{True}

  6. f,g\texttt{f},\texttt{g} 为 IOI 函数,则 f|g\texttt{f|g} 也是一个 IOI 函数。设 xx 为整数,则 f|g\texttt{f|g}xx 映射为 True\texttt{True},当且仅当 f,g\texttt{f},\texttt{g} 中至少有一个将 xx 映射为 True\texttt{True}

如果某个 IOI 函数用多条规则构造出,数字更大的规则将决定函数值。例如,对于 [1]&[2]|[3]\texttt{[1]\&[2]|[3]} 应当应用规则 6,其中 $\texttt{f} = \texttt{[1]\&[2]},\texttt{g} = \texttt{[3]}$(而非应用规则 4,其中 $\texttt{f} = \texttt{[1]},\texttt{g} = \texttt{[2]|[3]}$)。额外地,对于规则 4,5,6,应当最大化 f\texttt{f} 的长度。例如,对于 [4]ˆ[5]ˆ[6]\texttt{[4]ˆ[5]ˆ[6]},应当在 $\texttt{f} = \texttt{[4]ˆ[5]},\texttt{g} = \texttt{[6]}$ 上应用规则 5(而非 $\texttt{f} = \texttt{[4]},\texttt{g} = \texttt{[5]ˆ[6]}$)。

为备战期末考试,JOI 君准备好了一个长度为 NN 的 IOI 函数 SS。他打算用 QQ 个整数 X1,X2,,XQX_1,X_2,\cdots,X_Q 来练习他的计算技能。于是他找来了你——能够熟练处理 IOI 函数的人,来解决这个问题。

你需要写一个程序。给定 N,Q,SN,Q,S 以及 X1,X2,,XQX_1,X_2,\cdots,X_Q,对于 i=1,2=,Qi=1,2=\cdots,Q,回答 IOI 函数 SS 会将 XiX_i 映射成 True\texttt{True} 还是 False\texttt{False}

输入格式

输入格式如下所示:

NN QQ
SS
X1X_1
X2X_2
\vdots
XQX_Q

输出格式

输出 QQ 行,第 ii 行为 True\texttt{True} 或者 False\texttt{False},即 XiX_iSS 映射成的值。

15 5
(![2]|[3])&![4]
1
2
3
4
5
True
False
True
False
False
20 4
(!![23])^((([116])))
54
1
200
89
True
False
False
True
32 4
[2]|[5]&[1]|(([1000000000])|[7])
4
10
6
1
True
True
True
False

提示

样例解释

样例 11 解释如下:

XiX_i ![2]\texttt{![2]} [3]\texttt{[3]} ![2]|[3]\texttt{![2]|[3]} ![4]\texttt{![4]} (![2]|[3])&![4]\texttt{(![2]|[3])\&![4]}
11 True\texttt{True} False\texttt{False} True\texttt{True} True\texttt{True} True\texttt{True}
22 False\texttt{False} False\texttt{False} False\texttt{False}
33 True\texttt{True} True\texttt{True}
44 False\texttt{False}
55

样例 11 满足子任务 3,6,73,6,7 的条件。

样例 22 满足子任务 1,3,571,3,5\sim 7 的条件。

样例 33 满足子任务 3,4,6,73,4,6,7 的条件。

数据范围

  • 1N10000001 \le N \le 1\,000\,000
  • 1Q2000001 \le Q \le 200\,000
  • SS 为长度为 NN 的 IOI 函数;
  • 1Xi1091 \le X_i \le 10^91iQ1 \le i \le Q);
  • N,Q,XiN, Q, X_i1iQ1 \le i \le Q)均为整数。

子任务

  1. 55 points)SS 中不含 &\texttt{\&}|\texttt{|}
  2. 2020 points)Q=1Q = 1
  3. 1010 points)N10000N \le 10\,000
  4. 66 points)SS 中不含 !\texttt{!}ˆ\texttt{ˆ}
  5. 1212 points)当应用规则 4 或 6 来构造 SS 时,f\texttt{f}g\texttt{g} 中至少有一个是用规则 1 得到的;
  6. 2020 points)N400000N \le 400\, 000
  7. 2727 points)无额外约束。

*赛时公告:如果你复制题面中的 LaTeX,可能会得到 ˆ,但实际上是 ^。请特别注意。

由 Starrykiller 根据英文题面翻译。