atcoder#ABC222D. [ABC222D] Between Two Arrays

[ABC222D] Between Two Arrays

题目描述

長さ n n の数列 S = (s1, s2, , sn) S\ =\ (s_1,\ s_2,\ \dots,\ s_n) がすべての i i (1  i  n  1) (1\ \leq\ i\ \leq\ n\ -\ 1) に対して si  si+1 s_i\ \leq\ s_{i+1} を満たすとき、かつそのときに限り「数列 S S は広義単調増加である」と呼びます。

広義単調増加な長さ N N の整数列 $ A\ =\ (a_1,\ a_2,\ \dots,\ a_N),\ B\ =\ (b_1,\ b_2,\ \dots,\ b_N) $ が与えられます。
このとき、次の条件を満たす広義単調増加な長さ N N の整数列 C = (c1, c2, , cN) C\ =\ (c_1,\ c_2,\ \dots,\ c_N) を考えます。

  • すべての i i (1  i  N) (1\ \leq\ i\ \leq\ N) に対して ai  ci  bi a_i\ \leq\ c_i\ \leq\ b_i が成り立つ。

整数列 C C としてあり得る数列の個数を 998244353 998244353 で割ったあまりを求めてください。

输入格式

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

N N a1 a_1 a2 a_2 \dots aN a_N b1 b_1 b2 b_2 \dots bN b_N

输出格式

C C としてあり得る数列の個数を 998244353 998244353 で割ったあまりを出力せよ。

题目大意

给定两个单调不下降的序列 aabb,求单调不下降序列 cc ,满足 aicibia_i\le c_i\le b_i 并且最长的数量。对 998244353998244353 取模。

1n30001\le n\le 30000aibi30000\le a_i\le b_i\le 3000

2
1 1
2 3
5
3
2 2 2
2 2 2
1
10
1 2 3 4 5 6 7 8 9 10
1 4 9 16 25 36 49 64 81 100
978222082

提示

制約

  • 1  N  3000 1\ \leq\ N\ \leq\ 3000
  • 0  ai  bi  3000 0\ \leq\ a_i\ \leq\ b_i\ \leq\ 3000 (1  i  N) (1\ \leq\ i\ \leq\ N)
  • 整数列 A,B A,B は広義単調増加である。
  • 入力はすべて整数である。

Sample Explanation 1

C C としてあり得る数列は次の 5 5 個です。 - (1, 1) (1,\ 1) - (1, 2) (1,\ 2) - (1, 3) (1,\ 3) - (2, 2) (2,\ 2) - (2, 3) (2,\ 3) 数列 (2, 1) (2,\ 1) は広義単調増加でないため条件を満たさないことに注意してください。

Sample Explanation 2

C C としてあり得る数列は次の 1 1 個です。 - (2, 2, 2) (2,\ 2,\ 2)

Sample Explanation 3

個数を 998244353 998244353 で割ったあまりを求めることに注意してください。