CF1765J Hero to Zero

题目描述

本题没有英雄。我想我们应该把它命名为“归零”。 给定两个数组 $a$ 和 $b$,每个数组包含 $n$ 个非负整数。 令 $c$ 为一个 $n \times n$ 的矩阵,其中 $c_{i,j} = |a_i - b_j|$,对于每个 $i \in [1, n]$ 和每个 $j \in [1, n]$。 你的目标是将矩阵 $c$ 变为零矩阵,即每个元素都恰好为 $0$。为此,你可以任意次、以任意顺序执行以下操作: - 选择一个整数 $i$,然后将第 $i$ 行的所有元素 $c_{i,j}$($j \in [1, n]$)都减 $1$。每执行一次该操作,需支付 $1$ 个硬币; - 选择一个整数 $j$,然后将第 $j$ 列的所有元素 $c_{i,j}$($i \in [1, n]$)都减 $1$。每执行一次该操作,需支付 $1$ 个硬币; - 选择两个整数 $i$ 和 $j$,然后将 $c_{i,j}$ 减 $1$。每执行一次该操作,需支付 $1$ 个硬币; - 选择一个整数 $i$,然后将第 $i$ 行的所有元素 $c_{i,j}$($j \in [1, n]$)都加 $1$。每执行一次该操作,可获得 $1$ 个硬币; - 选择一个整数 $j$,然后将第 $j$ 列的所有元素 $c_{i,j}$($i \in [1, n]$)都加 $1$。每执行一次该操作,可获得 $1$ 个硬币。 你需要计算将矩阵 $c$ 变为零矩阵所需的最小硬币数。注意,所有 $c$ 的元素必须在操作后同时为 $0$。

输入格式

第一行包含一个整数 $n$($2 \le n \le 2 \cdot 10^5$)。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($0 \le a_i \le 10^8$)。 第三行包含 $n$ 个整数 $b_1, b_2, \dots, b_n$($0 \le b_j \le 10^8$)。

输出格式

输出一个整数,表示将矩阵 $c$ 变为零矩阵所需的最小硬币数。

说明/提示

在第一个样例中,矩阵如下: $$ \begin{matrix} 1&1&1\\ 0&0&0\\ 1&1&1\\ \end{matrix} $$ 你可以通过如下方式用 $2$ 个硬币将其变为零矩阵: - 对第一行减 $1$,支付 $1$ 个硬币; - 对第三行减 $1$,支付 $1$ 个硬币。 在第二个样例中,矩阵如下: $$ \begin{matrix} 2&2&1\\ 0&0&1\\ 2&2&1\\ \end{matrix} $$ 你可以通过如下方式用 $5$ 个硬币将其变为零矩阵: - 对第一行减 $1$,支付 $1$ 个硬币; - 对第三行减 $1$,支付 $1$ 个硬币; - 对第三行再减 $1$,支付 $1$ 个硬币; - 对 $a_{2,3}$ 减 $1$,支付 $1$ 个硬币; - 对第三列加 $1$,获得 $1$ 个硬币; - 对第一行减 $1$,支付 $1$ 个硬币; - 对 $a_{2,3}$ 再减 $1$,支付 $1$ 个硬币。 由 ChatGPT 4.1 翻译