CF2187F1.Al Fine (Maximizing Version)

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

这是该问题的最大化版本。与其他版本的不同之处在于,在本版本中,你需要找到所有“公共树”中可能的最大深度。此外,本版本对于 nn 的限制更大。只有在你解决了所有版本的本题后,才能进行 hack。

在圣诞节,Tortinita 和 Arietta 各自都得到了一个圣诞树。巧合的是,她们的树拥有完全相同的性质:两棵树均有 n+1n+1 个结点,且都以结点 00 作为根节点。在她们寄给你的圣诞贺卡中,会在祝福语后附上一个各自的树的 DFS 序列。回忆一下,DFS 序列是通过如下伪代码生成的。

dfs_order = []
def dfs(v):
    dfs_order.append(v)
    pick an arbitrary permutation s of children of v
    for child in s:
        dfs(child)

dfs(root)

设 Tortinita 的树的 DFS 序列为 a0,a1,,ana_0, a_1, \ldots, a_n,Arietta 的树的 DFS 序列为 b0,b1,,bnb_0, b_1, \ldots, b_n。你注意到 a0=b0=0a_0=b_0=0,而且因为她们是双胞胎姐妹,你想知道她们是否可能选到完全相同的树。你还觉得,姐妹们的圣诞树绝不会选平凡的结构。因此,你希望求出所有公共树中可能的最大深度 ^{\text{∗}}

^{\text{∗}} 树的深度定义为任意节点到根节点的简单路径上的最大边数。

输入格式

每组测试数据包含多组测试用例。第一行包含测试用例的数量 tt1t1041\leq t \leq 10^4)。接下来为每组测试用例的描述。

每组测试用例的第一行包含一个整数 nn2n1062\leq n \leq 10^6)。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \cdots, a_n1ain1 \leq a_i \leq n)。

第三行包含 nn 个整数 b1,b2,,bnb_1, b_2, \cdots, b_n1bin1 \leq b_i \leq n)。

保证序列 aabb 均无重复元素。

保证所有测试用例中 nn 的和不超过 10610^6

输出格式

对于每组测试用例,输出一个整数——所有公共树中可能的最大深度。

输入输出样例

  • 输入#1

    4
    2
    1 2
    1 2
    2
    1 2
    2 1
    5
    3 1 5 2 4
    4 3 2 1 5
    5
    2 3 4 1 5
    3 2 1 4 5

    输出#1

    2
    1
    3
    1

说明/提示

在第一个测试用例中,aabb 相同。考虑一颗链式树,边为 (0,1)(0,1)(1,2)(1,2),它能产生这两个 DFS 序列,其深度为 22。可以证明在所有公共树中最大深度为 22

在第二个测试用例中,考虑一棵星形树,边为 (0,1)(0,1)(0,2)(0,2),其深度为 11。可以证明最大深度为 11

在第三个测试用例中,下图是深度最大的方案之一,深度为 33

首页