#P15465. 交错归并

    ID: 14680 传统题 5000ms 512MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>CF3000数学数据结构树状数组枚举组合数学前缀和

交错归并

题目背景

现在有两段数列,你可以把它们交错合并成一段新数列,但每段数列内部元素的相对顺序必须保持不变。

我们关心的是:无论合并出来的新数列整体如何,它里面最长的连续上升段或连续下降段能被压到多短。

题目描述

对于一个长度为 kk 的序列

c=(c1,c2,,ck),c=(c_1,c_2,\ldots,c_k),

定义它的稳定性为最大的整数 ss,满足存在某个起点 ii,使得下面两种情况之一成立:

ci<ci+1<<ci+s1,c_i<c_{i+1}<\cdots<c_{i+s-1},

ci>ci+1>>ci+s1.c_i>c_{i+1}>\cdots>c_{i+s-1}.

也就是说,稳定性等于序列中最长连续严格单调段的长度。

对于两个序列 A,BA,B,如果一个序列 MM 可以由 AABB 归并得到,即:

  • MM 中存在一个子序列等于 AA
  • 删除这个子序列后,剩余元素按顺序恰好等于 BB

则称 MMA,BA,B 的一个归并序列。

定义 f(A,B)f(A,B) 为所有 A,BA,B 的归并序列中,稳定性的最小可能值。

现在给定两个序列:

X=(X1,X2,,Xn),X=(X_1,X_2,\ldots,X_n), Y=(Y1,Y2,,Ym).Y=(Y_1,Y_2,\ldots,Y_m).

你需要统计所有有序序列对 (A,B)(A,B),其中:

  • AAXX 的一个连续子段;
  • BBYY 的一个连续子段;

并按 f(A,B)f(A,B) 的值分类计数。

对于每个 x=1,2,,n+mx=1,2,\ldots,n+m,请输出满足 f(A,B)=xf(A,B)=x 的序列对数量。答案对 109+710^9+7 取模。

输入格式

第一行包含两个正整数 n,mn,m

第二行包含 nn 个正整数,表示序列 XX

第三行包含 mm 个正整数,表示序列 YY

输出格式

输出 n+mn+m 个整数,第 ii 个整数表示 x=ix=i 时的答案,对 109+710^9+7 取模。

样例 0 输入

5 3
1 2 5 7 4
8 3 6

样例 0 输出

0 84 6 0 0 0 0 0

附加样例

  • 样例 1 见下发文件中的 ex_merge1.in/out,该样例满足子任务 44 的限制。
  • 样例 2 见下发文件中的 ex_merge2.in/out,该样例满足子任务 55 的限制。
  • 样例 3 见下发文件中的 ex_merge3.in/out,该样例满足子任务 66 的限制。
  • 样例 4 见下发文件中的 ex_merge4.in/out,该样例满足子任务 99 的限制。

数据范围与约定

对于所有测试数据,保证:

1n,m3×105,1 \le n,m \le 3\times 10^5, 1Xi,Yin+m,1 \le X_i,Y_i \le n+m,

并且

{X1,X2,,Xn,Y1,Y2,,Ym}\{X_1,X_2,\ldots,X_n,Y_1,Y_2,\ldots,Y_m\}

11n+mn+m 的一个排列。

子任务 数据范围 特殊性质 分值
11 n,m10n,m\le 10 55
22 n,m30n,m\le 30 66
33 n,m100n,m\le 100 77
44 n,m300n,m\le 300 A 44
55 B
66
77 n,m2×103n,m\le 2\times 10^3 A 55
88 B
99
1010 n,m8×103n,m\le 8\times 10^3 77
1111 n,m7×104n,m\le 7\times 10^4
1212 n,m1.5×105n,m\le 1.5\times 10^5
1313 n,m2.3×105n,m\le 2.3\times 10^5
1414 无特殊限制 A 1010
1515 B
1616 77

特殊性质 A:

Xi=i,Yi=i+n.X_i=i,\qquad Y_i=i+n.

特殊性质 B:保证 X,YX,Y 分别都是单峰序列。