QOJ.ac

QOJ

実行時間制限: 9 s メモリ制限: 1024 MB 満点: 10

#8410. 序列拼接 [A]

統計

我们称数列 $C$ 的一个区间为该数列的任意非空连续子序列。特别地,这意味着长度为 $k$ 的数列拥有 $\frac{k(k+1)}{2}$ 个区间,因为每个区间由其起始位置和结束位置确定。

对于给定的整数数列,我们将其“稳定性”定义为其中最长严格单调区间的长度。更准确地说,数列 $[c_1, c_2, \dots, c_k]$ 的稳定性是满足以下条件的最大整数 $s$:存在一个下标 $i$ ($1 \le i \le k - s + 1$),使得 $c_i < c_{i+1} < \dots < c_{i+s-1}$ 或 $c_i > c_{i+1} > \dots > c_{i+s-1}$。例如,数列 $[8, 6, 1, 3, 5, 7, 4, 2]$ 的稳定性为 $4$,因为其中存在严格单调区间 $[1, 3, 5, 7]$,且不存在更长的此类区间。

两个数列 $A$ 和 $B$ 的“交织”(splot)是指任何长度为 $|A| + |B|$ 的数列,该数列包含一个(不一定连续的)子序列等于 $A$,且所有不在该子序列中的元素按顺序构成了数列 $B$。例如,数列 $[1, 2, 3]$ 和 $[4, 5]$ 的交织包括 $[1, 4, 2, 5, 3]$、$[4, 5, 1, 2, 3]$ 和 $[4, 1, 5, 2, 3]$,但不包括 $[1, 2, 3, 4, 3]$ 和 $[1, 2, 3, 5, 4]$。

最后,对于整数数列 $A$ 和 $B$,我们用 $f(A, B)$ 表示它们交织后的最小可能稳定性。

给定两个长度分别为 $n$ 和 $m$ 的整数数列 $A$ 和 $B$,你的任务是对于从 $1$ 到 $n + m$ 的每个整数 $x$,计算满足 $A'$ 是 $A$ 的区间、$B'$ 是 $B$ 的区间且 $f(A', B') = x$ 的数对 $(A', B')$ 的数量。由于这些数字可能非常大,你只需输出它们对 $10^9 + 7$ 取模后的结果。

你可以假设数列 $A$ 和 $B$ 中的所有元素互不相同。

输入格式

第一行包含两个整数 $n$ 和 $m$ ($1 \le n, m \le 300\,000$),分别表示数列 $A$ 和 $B$ 的长度。

第二行包含 $n$ 个整数 $A_1, A_2, \dots, A_n$ ($1 \le A_i \le n + m$),即数列 $A$。

第三行包含 $m$ 个整数 $B_1, B_2, \dots, B_m$ ($1 \le B_i \le n + m$),即数列 $B$。

保证数列 $A$ 和 $B$ 中的所有元素互不相同。换句话说,数列 $A$ 和 $B$ 的拼接构成了 $1$ 到 $n + m$ 的一个排列。

输出格式

在标准输出的一行中输出 $n + m$ 个整数,用空格分隔;其中第 $i$ 个数应等于满足 $A'$ 是 $A$ 的区间、$B'$ 是 $B$ 的区间且 $f(A', B') = i$ 的数对 $(A', B')$ 的数量对 $10^9 + 7$ 取模后的结果。

样例

输入 1

5 3
1 2 5 7 4
8 3 6

输出 1

0 84 6 0 0 0 0 0

说明 1

对于作为完整数列的区间,有 $f([1, 2, 5, 7, 4], [8, 3, 6]) = 2$,且稳定性为 $2$ 的交织的一个例子是 $[1, 8, 2, 5, 3, 7, 4, 6]$。

当我们考虑区间 $[1, 2, 5, 7]$ 和 $[3]$ 时,得到 $f([1, 2, 5, 7], [3]) = 3$,且稳定性为 $3$ 的交织的一个例子是 $[1, 2, 5, 3, 7]$。可以证明,数对 $([1, 2, 5, 7], [3])$ 无法交织出稳定性小于 $3$ 的数列。

对于区间 $[4]$ 和 $[6]$,有 $f([4], [6]) = 2$,其所有可能的交织 $[4, 6]$ 和 $[6, 4]$ 都是符合条件的例子。

该样例中的每一对区间都可以交织成稳定性不超过 $3$ 的数列。因此,对于 $x \ge 4$ 的答案均为 $0$。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.