#ATarc114d. [ARC114D] Moving Pieces on Line
[ARC114D] Moving Pieces on Line
题目描述
设 ,对于每个整数 ,有一个对应的顶点。对于每个 ,存在一条连接顶点 和 的无向边(下文称为边 )的图。
该图的所有边初始时都被涂成红色。现在有 个棋子,第 个棋子被放置在顶点 上。
maroon 君可以进行如下操作:
- 选择一个棋子。若该棋子当前在顶点 ,则可以将其移动到顶点 或 ,并将经过的那条边的颜色反转(如果当前为红色则变为蓝色,蓝色则变为红色)。
在操作过程中,允许多个棋子位于同一个顶点。
maroon 君希望通过若干次上述操作(可以为零次),使得边的颜色组合达到目标状态。目标状态由一个偶数 和 个整数 给出,具体要求如下:
- 对于 的所有 ,边 为红色;
- 对于 的所有 ,边 为蓝色;
- 对于 的所有 ,边 为红色;
- 以此类推,对于每个奇数 , 的边为蓝色,其余边为红色。
请你求出 maroon 君将边的颜色组合变为目标状态所需的最小操作次数。如果无法实现目标状态,则输出 。
输入格式
输入通过标准输入给出,格式如下:
输出格式
请输出 maroon 君将边的颜色组合变为目标状态所需的最小操作次数。如果无法实现目标状态,则输出 。
样例 1
输入
2 2
2 -1
-2 2
输出
4
样例 2
输入
2 2
2 2
5 8
输出
9
样例 3
输入
3 4
1 3 5
0 2 4 6
输出
-1
样例 4
输入
4 4
3 4 5 6
3 4 5 6
输出
2
说明/提示
限制条件
- 是偶数
- 输入均为整数
样例解释 1
例如,可以通过 次操作达到目标状态,需要改变 条边的颜色,这是最优解。初始状态如下(为方便起见,省略了 左侧和 右侧的边):

将 处的棋子移动到 ,状态变为:

将 处的棋子移动到 ,状态变为:

将 处的棋子移动到 ,状态变为:

将 处的棋子移动到 ,状态变为目标状态:

样例解释 2
初始时也可能有多个棋子在同一个顶点。
由 ChatGPT 4.1 翻译