atcoder#ARC114D. [ARC114D] Moving Pieces on Line

[ARC114D] Moving Pieces on Line

题目描述

X = 10100 X\ =\ 10^{100} として,各整数 X  i  X -X\ \leq\ i\ \leq\ X に対応する頂点があり,X  i  X1 -X\ \leq\ i\ \leq\ X-1 について頂点 i, i + 1 i,\ i\ +\ 1 を結ぶ無向辺 (以降,辺 { i, i + 1 } \{\ i,\ i\ +\ 1\ \} と呼ぶ) があるグラフがあります.

このグラフの辺は初めすべて赤く塗られています.また,N N 個 のコマがあり,i i 個目のコマは頂点 ai a_i に置かれています.

maroon 君は次の操作を行うことができます.

  • コマを 1 1 つ選ぶ. このコマが頂点 i i にあるとき,コマを頂点 i1 i-1 または頂点 i+1 i+1 に動かし,通った辺を,現在の色が赤なら青,青なら赤に塗り替える.

操作の過程で,同じ頂点に複数のコマが存在しても構いません.

maroon 君はこれから上記の操作を 0 0 回以上繰り返して,辺の色の組合せを目的の状態にしたいと思っています.目的の状態は 偶数 K K と,K K 個の整数 t1 < t2 <  < tK t_1\ <\ t_2\ <\ \cdots\ <\ t_K で表され,i < t1 i\ <\ t_1 について辺 { i, i + 1 } \{\ i,\ i\ +\ 1\ \} は赤,t1  i < t2 t_1\ \leq\ i\ <\ t_2 について辺 { i, i + 1 } \{\ i,\ i\ +\ 1\ \} は青,, tK  i \cdots,\ t_K\ \leq\ i について辺 { i, i + 1 } \{\ i,\ i\ +\ 1\ \} は赤 という状態です.より正確には,各奇数 j = 1, 3, , K1 j\ =\ 1,\ 3,\ \cdots,\ K-1 に対して,tj  i < tj+1 t_j\ \leq\ i\ <\ t_{j+1} を満たす i i について辺 { i, i + 1 } \{\ i,\ i\ +\ 1\ \} は青で,それ以外の辺はすべて赤です.

maroon 君が辺の色の組合せを目的の状態にするために必要な操作回数の最小値を求めてください.また,そのような操作が不可能であるなら 1 -1 を出力してください.

输入格式

入力は以下の形式で標準入力から与えられる.

N N K K a1 a_1 a2 a_2 \cdots aN a_N t1 t_1 t2 t_2 \cdots tK t_K

输出格式

maroon 君が辺の色の組合せを目的の状態にするために必要な操作回数の最小値を出力せよ.また,そのような操作が不可能であるなら 1 -1 を出力せよ.

题目大意

X=10100X=10{^{100}}。现在有一张节点编号从 X-XXX 的图,点 ii 到点 i+1(XiX1)i+1(-X\leq i\leq X-1) 之间有一条无向边,初始时所有边都是红色的。

NN 个棋子在这张图上,其中第 ii 个在点 aia{_i} 上。

Maroon 可以重复以下操作:

  • 选择一个棋子 ii,将它移动到 ai1a{_{i}}-1ai+1a{_{i}}+1 上,并把它所经过的边由红色染成蓝色,如果经过的边是蓝色的,那就染成红色。

Maroon 想把这张图染成他想要的颜色组合。他会给出 KK 个数字 t1t{_1}tKt{_K}(保证严格单调递增且 KK 为偶数),意思是将节点 t1t{_1} 左边的边染成红色,t1t{_1}t2t{_2} 之间的边染成蓝色……以此类推,最后把 tKt{_K} 右边的边染成红色。

求出达到要求的最少的操作次数,如果无解,输出 -1

2 2
2 -1
-2 2
4
2 2
2 2
5 8
9
3 4
1 3 5
0 2 4 6
-1
4 4
3 4 5 6
3 4 5 6
2

提示

制約

  • 1  N  5000 1\ \leq\ N\ \leq\ 5000
  • 2  K  5000 2\ \leq\ K\ \leq\ 5000
  • K K は偶数
  • ai  109 |a_i|\ \leq\ 10^9
  • ti  109 |t_i|\ \leq\ 10^9
  • ti < ti+1 t_i\ <\ t_{i+1}
  • 入力は全て整数

Sample Explanation 1

例えば以下のように 4 4 回の操作で目的の状態にでき,4 4 本の辺の色を変える必要があるのでこれが最適です. これは初めの状態です.便宜上 3 -3 より左と 3 3 より右の辺は省いています. ![0](https://img.atcoder.jp/arc114/cfe333a77072f2bb54812c06d62de656.png) 1 -1 にあるコマを 2 -2 に動かすと次の状態になります. ![1](https://img.atcoder.jp/arc114/93c2fca818e0d1a8069b70919a043d21.png) 2 2 にあるコマを 1 1 に動かすと次の状態になります. ![2](https://img.atcoder.jp/arc114/f7520729ea3f02659eef7df2d17c1363.png) 1 1 にあるコマを 0 0 に動かすと次の状態になります. ![3](https://img.atcoder.jp/arc114/fa295d290a5de5c01f66934899fb6280.png) 0 0 にあるコマを 1 -1 に動かすと次の状態になり,これが目的の状態です. ![last](https://img.atcoder.jp/arc114/eab39d19d0973644aa27e8c695ab5812.png)

Sample Explanation 2

初めから同じ頂点に複数のコマがある場合もあります.