QOJ.ac

QOJ

実行時間制限: 3.0 s メモリ制限: 1024 MB 満点: 100 ハック可能 ✓

#16948. 逆序对最小化

統計

给定一个 $r$ 行 $c$ 列的表格 $a$,其中包含 $1$ 到 $r \cdot c$ 的所有不同数字,且排列顺序任意。这些表格元素将被转移到一个初始为空的数组 $b$ 中。在表格非空时,可以对其执行以下两种操作之一:

  • 将表格第一行的元素按从第一列到最后一列的顺序追加到数组 $b$ 的末尾,并从表格中删除第一行。
  • 将表格第一列的元素按从第一行到最后一行的顺序追加到数组 $b$ 的末尾,并从表格中删除第一列。

要求选择操作顺序,使得在执行完所有操作后,所得数组 $b$ 中的逆序对数量最少。

逆序对定义为数组中满足 $1 \leqslant i < j \leqslant r \cdot c$ 且 $b_i > b_j$ 的下标对 $(i, j)$。

输入格式

第一行包含两个整数 $r$ 和 $c$ ($r \leqslant c, 1 \leqslant r \cdot c \leqslant 2\,000\,000$),分别表示表格的行数和列数。

接下来的 $r$ 行描述表格 $a$。第 $i$ 行包含 $c$ 个整数 $a_{i1}, \dots, a_{ic}$ ($1 \leqslant a_{ij} \leqslant r \cdot c$),表示矩阵 $a$ 的元素。

保证表格 $a$ 中的所有数字各不相同。

输出格式

输出一个整数,表示执行所有操作后数组 $b$ 中可能的最少逆序对数量。

子任务

子任务 分值 约束条件 依赖子任务
1 15 $r + c \leqslant 14$
2 18 $r \cdot c \leqslant 500$ 1
3 5 所有行和列均升序排列,$r \cdot c \leqslant 250\,000$
4 7 $r = 1, r \cdot c \leqslant 250\,000$
5 6 $r \leqslant 2, r \cdot c \leqslant 250\,000$ 4
6 2 $r \leqslant 20$ 1, 4, 5
7 10 $r, c \leqslant 100$ 1
8 2 $r \cdot c \leqslant 10\,000$ 1, 2, 7
9 1 $r \leqslant 100, c \leqslant 1000$ 1, 2, 7
10 1 $r \leqslant 100, c \leqslant 2500$ 1, 2, 7, 9
11 1 $r \leqslant 100, c \leqslant 5000$ 1, 2, 7, 9, 10
12 1 $r \leqslant 100, c \leqslant 7500$ 1, 2, 7, 9–11
13 1 $r \leqslant 100, c \leqslant 10\,000$ 1, 2, 7–12
14 4 $r \leqslant 100, c \leqslant 15\,000$ 1, 2, 7–13
15 2 $r \leqslant 100, c \leqslant 20\,000$ 1, 2, 7–14
16 3 $r, c \leqslant 200$ 1, 7
17 3 $r, c \leqslant 400$ 1, 7, 16
18 4 $r, c \leqslant 600$ 1, 2, 7, 16, 17
19 1 $r, c \leqslant 800$ 1, 2, 7, 16–18
20 1 $r, c \leqslant 1000$ 1, 2, 7, 9, 16–19
21 1 $r, c \leqslant 1200$ 1, 2, 7, 9, 16–20
22 1 $r, c \leqslant 1400$ 1, 2, 7, 9, 16–21
23 1 $r \cdot c \leqslant 100\,000$ 1, 2, 7–9, 16
24 1 $r \cdot c \leqslant 250\,000$ 1–10, 16, 17, 23
25 4 $r \cdot c \leqslant 500\,000$ 1–11, 16–18, 23, 24
26 1 $r \cdot c \leqslant 750\,000$ 1–12, 16–19, 23–25
27 1 $r \cdot c \leqslant 1\,000\,000$ 1–13, 16–20, 23–26
28 1 $r \cdot c \leqslant 1\,500\,000$ 1–14, 16–21, 23–27
29 1 无额外限制 1–28

样例

输入格式 1

2 3
3 4 1
5 6 2

输出格式 1

6

说明

在第一个样例中,通过两次删除第一行可以达到最少逆序对数量。结果数组 $b$ 为 $[3, 4, 1, 5, 6, 2]$,该数组包含 $6$ 个逆序对。

输入格式 2

2 3
2 3 4
1 6 5

输出格式 2

2

说明

在第二个样例中,为了达到最少逆序对数量,可以先删除第一列,然后两次删除第一行。结果数组 $b$ 为 $[2, 1, 3, 4, 6, 5]$,该数组包含 $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.