P10626 [JOI Open 2024] 考试 2 / Examination 2
题目描述
JOI 君在 IOI 高中上学,期末考试即将来临。考试的内容是计算 **IOI 函数**。IOI 函数是将 $[1,10^9]$ 之间的整数映射到布尔值(即 $\texttt{True}/\texttt{False}$)的函数。IOI 函数可以从以下六条 IOI 高中规定的规则中构造:
1. 设 $a$ 为 $[1,10^9]$ 之间的整数,则 $\texttt{[a]}$ 是一个 IOI 函数。它将不小于 $a$ 的整数映射成 $\texttt{True}$,将小于 $a$ 的整数映射成 $\texttt{False}$。
2. 记 $\texttt{f}$ 为 IOI 函数,则 $\texttt{(f)}$ 是一个 IOI 函数,它的映射规则与 $\texttt{f}$ 的映射规则相同。
3. 记 $\texttt{f}$ 为 IOI 函数,则 $\texttt{!f}$ 是一个 IOI 函数。设 $x$ 为整数,若 $\texttt{f}$ 将 $x$ 映射为 $\texttt{True}$,则 $\texttt{!f}$ 将 $x$ 映射为 $\texttt{False}$;否则 $\texttt{!f}$ 将 $x$ 映射为 $\texttt{True}$。
4. 记 $\texttt{f},\texttt{g}$ 为 IOI 函数,则 $\texttt{f\&g}$ 也是一个 IOI 函数。设 $x$ 为整数,则 $\texttt{f\&g}$ 将 $x$ 映射为 $\texttt{True}$,当且仅当 $\texttt{f},\texttt{g}$ 都将 $x$ 映射为 $\texttt{True}$。
5. 记 $\texttt{f},\texttt{g}$ 为 IOI 函数,则 $\texttt{f\^ g}$ 也是一个 IOI 函数。设 $x$ 为整数,则 $\texttt{f\^ g}$ 将 $x$ 映射为 $\texttt{True}$,当且仅当 $\texttt{f},\texttt{g}$ 中恰好有一个将 $x$ 映射为 $\texttt{True}$。
6. 记 $\texttt{f},\texttt{g}$ 为 IOI 函数,则 $\texttt{f|g}$ 也是一个 IOI 函数。设 $x$ 为整数,则 $\texttt{f|g}$ 将 $x$ 映射为 $\texttt{True}$,当且仅当 $\texttt{f},\texttt{g}$ 中至少有一个将 $x$ 映射为 $\texttt{True}$。
如果某个 IOI 函数用多条规则构造出,数字更大的规则将决定函数值。例如,对于 $\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,应当最大化 $\texttt{f}$ 的长度。例如,对于 $\texttt{[4]ˆ[5]ˆ[6]}$,应当在 $\texttt{f} = \texttt{[4]ˆ[5]},\texttt{g} = \texttt{[6]}$ 上应用规则 5(而非 $\texttt{f} = \texttt{[4]},\texttt{g} = \texttt{[5]ˆ[6]}$)。
为备战期末考试,JOI 君准备好了一个长度为 $N$ 的 IOI 函数 $S$。他打算用 $Q$ 个整数 $X_1,X_2,\cdots,X_Q$ 来练习他的计算技能。于是他找来了你——能够熟练处理 IOI 函数的人,来解决这个问题。
你需要写一个程序。给定 $N,Q,S$ 以及 $X_1,X_2,\cdots,X_Q$,对于 $i=1,2=\cdots,Q$,回答 IOI 函数 $S$ 会将 $X_i$ 映射成 $\texttt{True}$ 还是 $\texttt{False}$。
输入格式
输入格式如下所示:
> $N$ $Q$\
> $S$\
> $X_1$\
> $X_2$\
> $\vdots$\
> $X_Q$
输出格式
输出 $Q$ 行,第 $i$ 行为 $\texttt{True}$ 或者 $\texttt{False}$,即 $X_i$ 被 $S$ 映射成的值。
说明/提示
### 样例解释
样例 $1$ 解释如下:
| $X_i$ | $\texttt{![2]}$ | $\texttt{[3]}$ | $\texttt{![2]\char124[3]}$ | $\texttt{![4]}$ | $\texttt{(![2]\char124[3])\&![4]}$ |
| :--: | :--: | :--: | :--: | :--: | :--: |
| $1$ | $\texttt{True}$ | $\texttt{False}$ | $\texttt{True}$ | $\texttt{True}$ | $\texttt{True}$ |
| $2$ | $\texttt{False}$ | $\texttt{False}$ | $\texttt{False}$ | $\texttt{True}$ | $\texttt{False}$ |
| $3$ | $\texttt{False}$ | $\texttt{True}$ | $\texttt{True}$ | $\texttt{True}$ | $\texttt{True}$ |
| $4$ | $\texttt{False}$ | $\texttt{True}$ | $\texttt{True}$ | $\texttt{False}$ | $\texttt{False}$ |
| $5$ | $\texttt{False}$ | $\texttt{True}$ | $\texttt{True}$ | $\texttt{False}$ | $\texttt{False}$ |
样例 $1$ 满足子任务 $3,6,7$ 的条件。
样例 $2$ 满足子任务 $1,3,5\sim 7$ 的条件。
样例 $3$ 满足子任务 $3,4,6,7$ 的条件。
### 数据范围
- $1 \le N \le 1\,000\,000$;
- $1 \le Q \le 200\,000$;
- $S$ 为长度为 $N$ 的 IOI 函数;
- $1 \le X_i \le 10^9$($1 \le i \le Q$);
- $N, Q, X_i$($1 \le i \le Q$)均为整数。
### 子任务
1. ($5$ points)$S$ 中不含 $\texttt{\&}$ 和 $\texttt{|}$;
2. ($20$ points)$Q = 1$;
3. ($10$ points)$N \le 10\,000$;
4. ($6$ points)$S$ 中不含 $\texttt{!}$ 和 $\texttt{ˆ}$;
5. ($12$ points)当应用规则 4 或 6 来构造 $S$ 时,$\texttt{f}$ 和 $\texttt{g}$ 中至少有一个是用规则 1 得到的;
6. ($20$ points)$N \le 400\, 000$;
7. ($27$ points)无额外约束。
*赛时公告:如果你复制题面中的 LaTeX,可能会得到 `ˆ`,但实际上是 `^`。请特别注意。
由 Starrykiller 根据英文题面翻译。