atcoder#ARC129F. [ARC129F] Let's Play Tag

[ARC129F] Let's Play Tag

题目描述

数直線上に,すぬけくんと N+M N+M 人の子供が立っています.

時刻 0 0 の彼らの位置は以下のようなものです.

  • すぬけくんは座標 0 0 にいる.
  • N N 人の子供は座標が負の位置におり,このうち i i 番目の子供は座標 Li -L_i にいる.
  • M M 人の子供は座標が正の位置におり,このうち i i 番目の子供は座標 Ri R_i にいる.

今から彼らは鬼ごっこを開始します. 具体的には,彼らは以下の行動をします.

  • すぬけくんは最初に,N N 個の LM M 個の R からなる文字列 s s を一つ選ぶ. その後,各 i=1,2,,N+M i=1,2,\cdots,N+M について以下の操作を行う.

    • s s i i 文字目が L なら,座標が負の方向へ速度 2 2 で移動を開始する.
    • s s i i 文字目が R なら,座標が正の方向へ速度 2 2 で移動を開始する.
    • 子供を一人捕まえた(座標が一致した)時点で,次の i i での操作に移る. なお,i=N+M i=N+M の場合は鬼ごっこが終了となる.
  • すべての子供は,すぬけくんから遠ざかる方向へ常に速度 1 1 で移動し続ける.

すぬけくんが最初に選ぶことができる文字列 s s 全てについて鬼ごっこが終了する時刻を求めたときの,それらの値の総和を 998244353 998244353 で割った余りを求めてください.

输入格式

入力は以下の形式で標準入力から与えられる.

N N M M L1 L_1 L2 L_2 \cdots LN L_N R1 R_1 R2 R_2 \cdots RM R_M

输出格式

答えを出力せよ.

题目大意

Snuke\texttt{Snuke}n+mn+m 个小孩站在数轴上。

00 时刻,Snuke\texttt{Snuke} 站在 00 上,有 nn 个小孩站在负半轴,第 ii 个站在 Li-L_i;有 mm 个小孩站在正半轴,第 ii 个站在 RiR_i

然后他们开始操作:

  • Snuke\texttt{Snuke} 选一个包含 nnLmmR 的字符串 SS。然后对于 i:1n+mi:1\to n+m,操作:

    • Si=S_i= LSnuke\texttt{Snuke}2/s2/s 的速度向左走。

    • Si=S_i= RSnuke\texttt{Snuke}2/s2/s 的速度向右走。

    • 当抓到一个小孩了,就 ii+1i\to i+1

  • 每个时刻每个小孩背离 Snuke\texttt{Snuke}11

计数所有结束时间的和模 998244353998244353

3 3
1 2 3
1 2 3
2748
7 5
89789743 196247866 205535557 542612813 782887985 889864096 899373580
539329402 618885430 714090971 717251433 860233092
937403116

提示

制約

  • 3  N,M  250000 3\ \leq\ N,M\ \leq\ 250000
  • $ 1\ \leq\ L_1\ <\ L_2\ <\ \cdots\ <\ L_N\ <\ 998244353 $
  • $ 1\ \leq\ R_1\ <\ R_2\ <\ \cdots\ <\ R_M\ <\ 998244353 $
  • 入力される値はすべて整数である

Sample Explanation 1

例えば,s= s= LRRLLR の場合は,以下のようにゲームが進行します. - 時刻 0 0 : すぬけくんが負の方向へ移動を開始する. - 時刻 1 1 : すぬけくんが座標 2 -2 で子供を捕まえた後,正の方向へ移動を開始する. - 時刻 5 5 : すぬけくんが座標 6 6 で子供を捕まえた後,正の方向へ移動を開始する. - 時刻 6 6 : すぬけくんが座標 8 8 で子供を捕まえた後,負の方向へ移動を開始する. - 時刻 22 22 : すぬけくんが座標 24 -24 で子供を捕まえた後,負の方向へ移動を開始する. - 時刻 23 23 : すぬけくんが座標 26 -26 で子供を捕まえたあと,正の方向へ移動を開始する. - 時刻 75 75 : すぬけくんが座標 78 78 で子供を捕まえ,鬼ごっこが終了する.