AT_abc471_g [ABC471G] Caeser Syllables
题目描述
有 $K$ 种符号,编号为 $0$ 到 $K-1$。
每个符号要么是元音,要么不是元音。当 $V_j = 1$ 时,符号 $j$ 是**元音**;当 $V_j = 0$ 时,符号 $j$ 不是元音。
一个符号串的**音节数**定义为该符号串中**仅由元音组成的极大连续子段**的数量。形式化地,对于长度为 $N$ 的符号串 $(a_1, \dots, a_N)$,其音节数为满足以下所有条件的整数对 $(l, r)$($1 \le l \le r \le N$)的数量:
- 符号 $a_l, \dots, a_r$ 全部是元音;
- 若 $l > 1$,则符号 $a_{l-1}$ 不是元音;
- 若 $r < N$,则符号 $a_{r+1}$ 不是元音。
给定长度为 $N$ 的数列 $A = (A_1, \dots, A_N)$。对于每个 $k = 0, \dots, K-1$,回答以下问题:
- 定义长度为 $N$ 的符号串 $A' = (A'_1, \dots, A'_N)$,其中 $A'_i := (A_i + k) \bmod K$。求 $A'$ 的音节数。
输入格式
输入第一行包含六个整数 $N, K, \mathrm{seed}, M$。
接下来一行包含 $M$ 个整数 $b_1, b_2, \dots, b_M$。
接下来一行包含 $K$ 个整数 $V_0, V_1, \dots, V_{K-1}$。
本题使用一种特殊的输入方式。题目不直接给出 $A_1, \dots, A_N$,而是给出 $\mathrm{seed}, M, b_1, \dots, b_M$。请按照以下伪代码恢复 $A_1, \dots, A_N$:
$$
\def\arraystretch{1.2}
\begin{array}{ll}
\hline
& \mathrm{state} \leftarrow \mathrm{seed} \\
&\textbf{for }i = 1, \dots, N: \\
&\qquad\textbf{if}\ \ i \leq M :\\
&\qquad \qquad\qquad A_i \leftarrow b_i\\
&\qquad\textbf{else}: \\
& \qquad\qquad x \leftarrow \left( ((\mathrm{state} \gg 18) \oplus \mathrm{state}) \gg 27 \right) \bmod 2^{32} \\
&\qquad\qquad r \leftarrow \mathrm{state} \gg 59 \\
&\qquad\qquad y \leftarrow \left( (x \gg r) + (x \ll (32-r)) \right) \bmod 2^{32} \\
&\qquad\qquad A_i \leftarrow y \bmod K \\
&\qquad\qquad \mathrm{state} \leftarrow (\mathrm{state} \times 6364136223846793005 + 2026081520260815) \bmod 2^{64}\\
\hline
\end{array}
$$
其中:
- $\oplus$ 表示按位异或(XOR);
- $\gg$ 表示右移位运算($\lfloor s / 2^t \rfloor$);
- $\ll$ 表示左移位运算($s \times 2^t$);
- 所有变量均为无符号 64 位整数。
输出格式
输出 $K$ 行。第 $m$ 行($1 \le m \le K$)输出 $k = m-1$ 时的答案。
说明/提示
**【样例 1 解释】**
该样例中 $A = (4, 2, 4, 1)$。
- $k = 0$ 时,$A' = (4, 2, 4, 1)$,音节数为 $2$;
- $k = 1$ 时,$A' = (5, 3, 5, 2)$,音节数为 $0$;
- $k = 2$ 时,$A' = (0, 4, 0, 3)$,音节数为 $1$;
- $k = 3$ 时,$A' = (1, 5, 1, 4)$,音节数为 $2$;
- $k = 4$ 时,$A' = (2, 0, 2, 5)$,音节数为 $1$;
- $k = 5$ 时,$A' = (3, 1, 3, 0)$,音节数为 $2$。
**【样例 2 解释】**
该样例中 $A = (5, 6, 0, 6, 8, 8, 8, 3, 0, 2, 3, 7, 3, 2, 5)$。
**【数据范围】**
- $1 \le N \le 7 \times 10^6$;
- $1 \le K \le 2300$;
- $0 \le A_i \le K-1$($1 \le i \le N$);
- $V_j \in \{0, 1\}$($0 \le j \le K-1$);
- $0 \le \mathrm{seed} \le 2^{60} - 1$;
- $1 \le M \le \min(N, 10^5)$;
- $0 \le b_i \le K-1$($1 \le i \le M$);
- 所有输入值均为整数。