9481.半

Time Limit: 4s Memory Limit: 500MB

某学校组织了两场个人比赛,两场比赛有着相同的 $n$ 名选手,第 $i$ 名选手的编号为 $i$。

你提前预知了两场个人比赛的结果:第一场比赛排名从高到低的选手编号为 $a_1, a_2, \cdots, a_n$,第二场比赛排名从高到低的选手编号为 $b_1, b_2, \cdots, b_n$。不会出现某两名不同选手在某一场比赛中相同排名的情况,即保证 $a, b$ 均是关于 $n$ 的排列。

你不仅是 $n$ 名选手中的其中一个,还是一个大权在握的管理员。因此,你可以找出各种理由禁赛其他选手。假设选手禁赛之后,其他人的相对排名仍然与你提前预知的结果一致。

现在,对于所有的 $1 \leq i \leq n$,你需要求出你是选手 $i$ 时,你想要在两场比赛中均获得第一名,最少需要禁赛多少个选手。

Input Format(From the terminal/stdin)

每个测试点中包含多组测试数据。输入的第一行包含一个正整数 $T(1 \leq T \leq 20)$,表示数据组数。对于每组测试数据:

第一行一个正整数 $n(1 \leq n \leq 10^6)$,表示选手个数。

第二行 $n$ 个正整数 $a_1, a_2, \cdots, a_n$,表示第一场比赛排名从高到低的选手编号。保证 $a$ 是关于 $n$ 的排列。

第三行 $n$ 个正整数 $b_1, b_2, \cdots, b_n$,表示第二场比赛排名从高到低的选手编号。保证 $b$ 是关于 $n$ 的排列。

保证所有测试数据中 $n$ 之和不超过 $2 \times10^6$。

Output Format(To the terminal/stdout)

对于每组测试数据:一行用空格隔开的 $n$ 个整数,第 $i$ 个整数表示你是选手 $i$ 时的答案。

Sample Input

Copy
1
5
2 1 5 4 3
2 4 5 1 3 \n
 \n
 · · · · \n
 · · · · \n

Sample Output

Copy
3 0 4 3 3 · · · · \n
Source: 2025“钉耙编程”中国大学生算法设计暑期联赛(2), HDU, 7996

Submit

请先 登录

© 2025 FAQs