A4771 | 最小化两数组的距离
来源官方 / 2025
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
给定一个长度为 $N$ 的二元组序列 $A$:$\tt{[(Ax_1, Ay_1), (Ax_2, Ay_2), \ldots, (Ax_N, Ay_N)]}$;
和一个长度为 $N$ 的二元组序列 $B$:$\tt{[(Bx_1, By_1), (Bx_2, By_2), \ldots, (Bx_N, By_N)]}$。
现在你可以从 $A$ 中选择 $1$ 个二元组与 $B$ 中的 $1$ 个二元组进行交换;或者从 $A$ 中选择 $2$ 个二元组与 $B$ 中的 $2$ 个二元组进行交换;或者什么也不做。
令:
$$ S = \left \vert {\sum_{i=1}^{N} Ax_i - \sum_{i=1}^{N} Bx_i} \right \vert $$
$$ T = \left \vert {\sum_{i=1}^{N} Ay_i - \sum_{i=1}^{N} By_i} \right \vert $$
你可以通过以上方法最小化 $S$ 的值;若两种操作方案得到的 $S$ 的值相同,则选择 $T$ 最小的那种;最后输出最小化后的 $S$ 和 $T$。
$\large{数据范围}$
- $2 \le N \le 1000$
- $0 \le Ax_i, Ay_i, Bx_i, By_i \le 500$
- 所有输入均为整数
和一个长度为 $N$ 的二元组序列 $B$:$\tt{[(Bx_1, By_1), (Bx_2, By_2), \ldots, (Bx_N, By_N)]}$。
现在你可以从 $A$ 中选择 $1$ 个二元组与 $B$ 中的 $1$ 个二元组进行交换;或者从 $A$ 中选择 $2$ 个二元组与 $B$ 中的 $2$ 个二元组进行交换;或者什么也不做。
令:
$$ S = \left \vert {\sum_{i=1}^{N} Ax_i - \sum_{i=1}^{N} Bx_i} \right \vert $$
$$ T = \left \vert {\sum_{i=1}^{N} Ay_i - \sum_{i=1}^{N} By_i} \right \vert $$
你可以通过以上方法最小化 $S$ 的值;若两种操作方案得到的 $S$ 的值相同,则选择 $T$ 最小的那种;最后输出最小化后的 $S$ 和 $T$。
$\large{数据范围}$
- $2 \le N \le 1000$
- $0 \le Ax_i, Ay_i, Bx_i, By_i \le 500$
- 所有输入均为整数
输入格式
对于每个测试文件,格式如下:
$\tt{N}$
$\tt{Ax_1\ Ay_1}$
$\tt{Ax_2\ Ay_2}$
$\tt{\vdots}$
$\tt{Ax_N\ Ay_N}$
$\tt{Bx_1\ By_1}$
$\tt{Bx_2\ By_2}$
$\tt{\vdots}$
$\tt{Bx_N\ By_N}$
输出格式
对于每个测试用例,在单独的一行中输出最小化的 $S$ 和 $T$ 的值,中间用空格隔开。
输入输出样例
输入 #1
2 1 4 2 3 4 1 3 2
输出 #1
0 0
输入 #2
4 2 1 3 2 7 4 5 3 13 2 11 1 17 3 19 4
输出 #2
1 0
输入 #3
7 68 50 14 90 88 50 79 13 5 64 11 72 40 38 42 49 63 71 86 13 55 93 9 77 1 2 2 45
输出 #3
1 27
$\bf{样例\ 1:}$
未交换元素时 $S = \vert 3 - 7 \vert = 4,\ T = \vert 7 - 3 \vert = 4$。
我们交换 $A_2$ 和 $B_1$;
$A$ 变为 $\tt{[(1, 4), (4, 1)]}$,$B$ 变为 $\tt{[(2, 3), (3, 2)]}$;
此时 $S = \vert 5 - 5 \vert = 0,\ T = \vert 5 - 5 \vert = 0$。
$\bf{样例\ 2:}$
未交换元素时 $S = \vert 17 - 60 \vert = 43,\ T = \vert 10 - 10 \vert = 0$。
我们交换 $A_1$ 和 $B_2$ 以及 $A_4$ 和 $B_3$;
$A$ 变为 $\tt{[(11, 1), (3, 2), (7, 4), (17, 3)]}$,$B$ 变为 $\tt{[(13, 2), (2, 1), (5, 3), (19, 4)]}$;
此时 $S = \vert 38 - 39 \vert = 1,\ T = \vert 10 - 10 \vert = 0$。
未交换元素时 $S = \vert 3 - 7 \vert = 4,\ T = \vert 7 - 3 \vert = 4$。
我们交换 $A_2$ 和 $B_1$;
$A$ 变为 $\tt{[(1, 4), (4, 1)]}$,$B$ 变为 $\tt{[(2, 3), (3, 2)]}$;
此时 $S = \vert 5 - 5 \vert = 0,\ T = \vert 5 - 5 \vert = 0$。
$\bf{样例\ 2:}$
未交换元素时 $S = \vert 17 - 60 \vert = 43,\ T = \vert 10 - 10 \vert = 0$。
我们交换 $A_1$ 和 $B_2$ 以及 $A_4$ 和 $B_3$;
$A$ 变为 $\tt{[(11, 1), (3, 2), (7, 4), (17, 3)]}$,$B$ 变为 $\tt{[(13, 2), (2, 1), (5, 3), (19, 4)]}$;
此时 $S = \vert 38 - 39 \vert = 1,\ T = \vert 10 - 10 \vert = 0$。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?