atcoder#ARC133B. [ARC133B] Dividing Subsequence

[ARC133B] Dividing Subsequence

题目描述

(1,2,,N) (1,2,\cdots,N) の順列 P=(P1,P2,,PN) P=(P_1,P_2,\cdots,P_N) および Q=(Q1,Q2,,QN) Q=(Q_1,Q_2,\cdots,Q_N) が与えられます.

すぬけくんは,P P Q Q から(連続するとは限らない)部分列を取り出そうとしています. ここで,取り出した部分列は以下の条件を満たす必要があります.

  • P P から取り出した部分列と Q Q から取り出した部分列の長さは等しい.以下,この長さを k k とおく.
  • P P から取り出した部分列を a=(a1,a2,,ak) a=(a_1,a_2,\cdots,a_k) Q Q から取り出した部分列を b=(b1,b2,,bk) b=(b_1,b_2,\cdots,b_k) とおく. このとき,各 1  i  k 1\ \leq\ i\ \leq\ k について,bi b_i ai a_i の倍数である.

すぬけ君が取り出せる部分列の長さの最大値を求めて下さい.

输入格式

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

N N P1 P_1 P2 P_2 \cdots PN P_N Q1 Q_1 Q2 Q_2 \cdots QN Q_N

输出格式

答えを出力せよ.

题目大意

【题目大意】

给定两个长度为 n(n2×105)n(n\le 2\times 10^5)1n1\sim n 的排列 P\text{P}Q\text{Q}

现在需要在 P\text{P}Q\text{Q} 中分别取出长度为 kk 两个子序列 A\text{A}B\text{B},满足 i[1,k],aibi\forall i\in [1,k],a_i\mid b_i

最大化 kk,求 kk

【输入格式】

共三行。

第一行一个整数 nn

第二行 nn 个整数表示排列 P\text{P}

第三行 nn 个整数表示排列 Q\text{Q}

【输出格式】

一行一个整数 kk 表示答案。

4
3 1 4 2
4 2 1 3
2
5
1 2 3 4 5
5 4 3 2 1
3
10
4 3 1 10 9 2 8 6 5 7
9 6 5 4 2 3 8 10 1 7
6

提示

制約

  • 1  N  200000 1\ \leq\ N\ \leq\ 200000
  • P P (1,2,,N) (1,2,\cdots,N) の順列である
  • Q Q (1,2,,N) (1,2,\cdots,N) の順列である
  • 入力される値はすべて整数である

Sample Explanation 1

P P から部分列 (1,2) (1,2) を,Q Q から部分列 (4,2) (4,2) を取り出すと,これは条件を満たします. 長さ 3 3 以上の部分列を条件を満たすように取ることはできないため,答えは 2 2 です.