#ATarc109d. [ARC109D] く
[ARC109D] く
题目描述
有一个由 行 列组成的网格棋盘。行号从上到下依次为 ,列号从左到右依次为 。在这个棋盘上有 个石子,分别放在二维平面上的点 。
当 个石子满足以下条件时,称它们“呈现折线形排列”:
- 每个石子都放在整数坐标点上;
- 每个石子都与另一个石子相邻(即距离为 的位置上有另一个石子);
- 个石子不在同一直线上。
特别地,初始的石子排列 就是折线形排列。
你可以任意选择一个石子,并将其移动到任意位置。你可以进行任意多次这样的操作。但每次操作后,石子都必须保持折线形排列。请你用最少的操作次数,使得石子分别位于点 。保证在该状态下,石子仍然呈折线形排列。在此限制下,总能在有限次操作内达到目标。
给定 组数据,请分别输出每组数据的最小操作次数。
输入格式
输入以如下格式从标准输入读入。
每组数据格式如下:
输出格式
输出 个值。第 行输出第 组数据对应的最小操作次数。
样例 1
输入
1
3 2 2 2 2 1
输出
4
样例 2
输入
10
0 0 1 0 0 1
1 0 0 1 1 1
2 -1 1 -1 1 0
1 -2 2 -1 1 -1
-1 2 0 2 -1 3
-1 -2 -2 -2 -2 -3
-2 4 -3 3 -2 3
3 1 4 2 4 1
-4 2 -4 3 -3 3
5 4 5 3 4 4
输出
0
1
2
3
4
5
6
7
8
9
说明/提示
注意
个石子是不可区分的。例如,最初在 的石子,最终放在 的任意一个位置都可以。
约束
- 当石子分别位于 时,石子呈折线形排列
样例解释 1
用 # 表示石子。你可以用如下 次操作将石子移动到指定位置:
.... .... .... ..#. ..##
#... -> ##.. -> .##. -> .##. -> ..#.
##.. .#.. .#.. .... ....
由 ChatGPT 4.1 翻译