atcoder#ARC149B. [ARC149B] Two LIS Sum

[ARC149B] Two LIS Sum

题目描述

数列 P = (P1, , PN) P\ =\ (P_1,\ \ldots,\ P_N) に対し,その最長増加部分列の長さを LIS(P) \mathrm{LIS}(P) と書くことにします.

1 1 以上 N N 以下の整数からなる順列 A = (A1, , AN) A\ =\ (A_1,\ \ldots,\ A_N) および B = (B1, , BN) B\ =\ (B_1,\ \ldots,\ B_N) が与えられます.これらの数列に対して,以下の操作を何度でも行うことができます(0 0 回でもよいです).

  • 1 i N1 1\leq\ i\leq\ N-1 となる整数 i i をひとつ選ぶ.Ai A_i Ai+1 A_{i+1} をスワップし,Bi B_i Bi+1 B_{i+1} をスワップする.

操作結果の LIS(A) + LIS(B) \mathrm{LIS}(A)\ +\ \mathrm{LIS}(B) としてありうる最大値を答えてください.

最長増加部分列とは 数列の部分列とは,数列から 0 0 個以上の要素を取り除いた後,残りの要素を元の順序で連結して得られる数列のことをいいます. 例えば,(10,30) (10,30) (10,20,30) (10,20,30) の部分列ですが,(20,10) (20,10) (10,20,30) (10,20,30) の部分列ではありません.

数列の最長増加部分列とは,数列の狭義単調増加な部分列のうち,長さが最大のもののことをいいます.

输入格式

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

N N A1 A_1 \ldots AN A_N B1 B_1 \ldots BN B_N

输出格式

操作結果の LIS(A) + LIS(B) \mathrm{LIS}(A)\ +\ \mathrm{LIS}(B) としてありうる最大値を出力してください.

题目大意

给定长为 nn 的两排列 A,BA,B,允许进行操作:

选择 1in11 \leq i \leq n-1,将 Ai,BiA_i,B_i 同时与 Ai+1,Bi+1A_{i+1},B_{i+1} 交换。

求二者 LIS\text{LIS} 最大和。

5
5 2 1 4 3
3 1 2 5 4
8
5
1 2 3 4 5
1 2 3 4 5
10

提示

制約

  • 2 N 3× 105 2\leq\ N\leq\ 3\times\ 10^5
  • 1 Ai N 1\leq\ A_i\leq\ N
  • 1 Bi N 1\leq\ B_i\leq\ N
  • i j i\neq\ j ならば Ai Aj A_i\neq\ A_j かつ Bi Bj B_i\neq\ B_j

Sample Explanation 1

例えば次のように操作を行うことで,LIS(A) + LIS(B) = 8 \mathrm{LIS}(A)\ +\ \mathrm{LIS}(B)\ =\ 8 を達成できます. - i = 2 i\ =\ 2 として操作を行う.A = (5,1,2,4,3) A\ =\ (5,1,2,4,3) , B = (3,2,1,5,4) B\ =\ (3,2,1,5,4) となる. - i = 1 i\ =\ 1 として操作を行う.A = (1,5,2,4,3) A\ =\ (1,5,2,4,3) , B = (2,3,1,5,4) B\ =\ (2,3,1,5,4) となる. - i = 4 i\ =\ 4 として操作を行う.A = (1,5,2,3,4) A\ =\ (1,5,2,3,4) , B = (2,3,1,4,5) B\ =\ (2,3,1,4,5) となる. このとき A A は最長増加部分列 (1,2,3,4) (1,2,3,4) を持ち,LIS(A)=4 \mathrm{LIS}(A)=4 が成り立ちます.B B は最長増加部分列 (2,3,4,5) (2,3,4,5) を持ち,LIS(B)=4 \mathrm{LIS}(B)=4 が成り立ちます.

Sample Explanation 2

操作を 1 1 度も行わないことにより,LIS(A) + LIS(B) = 10 \mathrm{LIS}(A)\ +\ \mathrm{LIS}(B)\ =\ 10 を達成できます.