QOJ.ac

QOJ

时间限制: 1.0 s 内存限制: 1024 MB 总分: 100

#10275. P 到 Q

统计

给定两个 $1$ 到 $N$ 的排列 $P$ 和 $Q$。你的分数 $S$ 初始化为 $\text{inversions}(P)^\dagger$。

你可以进行最多 $10 \cdot N$ 次以下操作: * 选择任意满足 $1 \le x \le N$ 的整数 $x$。从 $P$ 中删除 $x$,然后将 $x$ 插入到 $P$ 中的任意位置。将 $S$ 更新为 $\max(S, \text{inversions}(P))$。

你的目标是将 $P$ 变为 $Q$,同时最小化最终的 $S$ 值。此外,请输出所执行的操作。 注意:你不需要最小化操作次数。

$\dagger \text{inversions}(P)$ 表示满足 $1 \le i < j \le N$ 且 $P_i > P_j$ 的数对 $(i, j)$ 的数量。

输入格式

  • 第一行包含一个整数 $T$,表示测试用例的数量。
  • 每个测试用例包含三行输入:
    • 第一行包含 $N$,即排列的长度。
    • 第二行包含 $N$ 个整数 $P_1, P_2, \dots, P_N$,表示排列 $P$。
    • 第三行包含 $N$ 个整数 $Q_1, Q_2, \dots, Q_N$,表示排列 $Q$。

输出格式

对于每个测试用例,输出如下: 首先,在新的一行输出 $K$ ($0 \le K \le 10 \cdot N$),表示你希望执行的操作次数。 接下来的 $K$ 行,每行包含两个空格分隔的整数: $x$ ($1 \le x \le N$):在此操作中选择删除并重新插入的数字; $pos$ ($1 \le pos \le N$):重新插入 $x$ 的位置。注意,删除 $x$ 后剩余 $N-1$ 个元素。$pos = i$ 表示我们将 $x$ 重新插入到第 $i$ 个元素之前,$pos = N$ 表示我们将它插入到末尾。

数据范围

  • $1 \le T \le 100$
  • $1 \le N \le 500$
  • $1 \le P_i, Q_i \le N$
  • 对于所有 $i \neq j$,$P_i \neq P_j$
  • 对于所有 $i \neq j$,$Q_i \neq Q_j$
  • 所有测试用例的 $N$ 之和不超过 $500$。

样例

样例输入 1

3
2
1 2
2 1
3
1 2 3
1 2 3
3
2 1 3
3 1 2

样例输出 1

1
1 2
0
2
1 1
3 1

说明

测试用例 1:初始时,$S = 0$,因为 $\text{inversions}([1, 2]) = 0$。 我们执行一次操作,即删除 $1$ 并将其重新插入到第 $2$ 个位置。 这会将排列变为 $[2, 1]$,$S$ 更新为 $\max(0, \text{inversions}([2, 1])) = 1$。 我们已成功将 $P$ 转换为 $Q$,并且可以证明不可能获得更低的分数。

测试用例 3:我们展示步骤: 初始条件:$P = [2, 1, 3], S = 1$。 删除 $1$ 并重新插入到位置 $1$:$P = [1, 2, 3], S = 1$。 * 删除 $3$ 并重新插入到位置 $1$:$P = [3, 1, 2], S = 2$。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.