CF1365C Rotation Matching

题目描述

在 Ashish 神秘失踪后,他最喜欢的两位弟子 Ishika 和 Hriday 各自得到了秘密信息的一半。这两条信息可以分别表示为一个长度为 $n$ 的排列,记为 $a$ 和 $b$。 注意,$n$ 元素的排列是一个数列 $a_1, a_2, \ldots, a_n$,其中每个 $1$ 到 $n$ 的数字恰好出现一次。 可以通过对序列 $a$ 和 $b$ 进行某种排列,使得它们之间匹配的元素对数最大,从而解码信息。若满足以下条件之一,则称元素对 $a_i$ 和 $b_j$ 匹配: - $i = j$,即它们在相同的位置上。 - $a_i = b_j$。 两位弟子可以进行如下操作任意次: - 选择一个数字 $k$,将其中一个排列循环左移或右移 $k$ 次。 对任意排列 $c$,一次循环左移操作会将 $c_1:=c_2, c_2:=c_3, \ldots, c_n:=c_1$ 同时赋值;一次循环右移操作会将 $c_1:=c_n, c_2:=c_1, \ldots, c_n:=c_{n-1}$ 同时赋值。 请帮助 Ishika 和 Hriday 找出在进行任意(可能为零)次上述操作后,最多能有多少对元素匹配。

输入格式

第一行输入一个整数 $n$ $(1 \le n \le 2 \times 10^5)$,表示数组的长度。 第二行输入 $n$ 个整数 $a_1, a_2, \ldots, a_n$ $(1 \le a_i \le n)$,表示第一个排列。 第三行输入 $n$ 个整数 $b_1, b_2, \ldots, b_n$ $(1 \le b_i \le n)$,表示第二个排列。

输出格式

输出一个整数,表示经过任意次上述操作后,最多能有多少对元素匹配。

说明/提示

对于第一组样例:可以将 $b$ 向右循环移动 $k=1$ 次。此时排列变为 $\{1, 2, 3, 4, 5\}$ 和 $\{1, 2, 3, 4, 5\}$。 对于第二组样例:无需进行操作。对于 $a$ 和 $b$ 的所有可能旋转,匹配对数都不会超过 $1$。 对于第三组样例:可以将 $b$ 向左循环移动 $k=1$ 次。此时排列变为 $\{1, 3, 2, 4\}$ 和 $\{2, 3, 1, 4\}$。第 $2$ 和第 $4$ 个位置的元素对匹配。对于所有可能的旋转,匹配对数都不会超过 $2$。 由 ChatGPT 4.1 翻译