100 atcoder#ABC109D. [ABC109D] Make Them Even

[ABC109D] Make Them Even

题目描述

H H 行横 W W 列に区切られたマス目があり、上から i i 番目、左から j j 列目のマスをマス (i, j) (i,\ j) と呼びます。

マス (i, j) (i,\ j) には aij a_{ij} 枚のコインが置かれています。

あなたは以下の操作を何度でも行うことができます。

操作: まだ選んだことのないマスのうち 1 1 枚以上のコインが置かれているマスを 1 1 つ選び、そのマスに置かれているコインのうち 1 1 枚を上下左右に隣接するいずれかのマスに移動する

偶数枚のコインが置かれたマスの数を最大化してください。

输入格式

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

H H W W a11 a_{11} a12 a_{12} ... ... a1W a_{1W} a21 a_{21} a22 a_{22} ... ... a2W a_{2W} : : aH1 a_{H1} aH2 a_{H2} ... ... aHW a_{HW}

输出格式

偶数枚のコインが置かれたマスの数が最大となるような操作の列を次の形式で出力せよ。

N N y1 y_1 x1 x_1 y1 y_1' x1 x_1' y2 y_2 x2 x_2 y2 y_2' x2 x_2' : : yN y_N xN x_N yN y_N' xN x_N'

すなわち、1 1 行目には操作の回数を表す 0 0 以上 H × W H\ \times\ W 以下の整数 N N を出力せよ。

i+1 i+1 (1  i  N 1\ \leq\ i\ \leq\ N ) 行目には i i 回目の操作を表す整数 yi, xi, yi, xi y_i,\ x_i,\ y_i',\ x_i' (1  yi, yi  H 1\ \leq\ y_i,\ y_i'\ \leq\ H かつ 1  xi, xi  W 1\ \leq\ x_i,\ x_i'\ \leq\ W ) を出力せよ。 ただし、これはマス (yi, xi) (y_i,\ x_i) にあるコインのうち 1 1 枚を上下左右に隣接するマス (yi, xi) (y_i',\ x_i') に移動させる操作を表す。

問題文中の操作でないような操作が与えられた場合や、出力の形式が正しくない場合には Wrong Answer となるので注意せよ。

题目大意

有一个方形单元格的网格,有 HH 个水平行和 WW 个垂直列。第 ii 行和第 jj 列的单元格将表示为。 在 Cell[i][j] 中,放置了 a[i][j] 个硬币。

您可以任意次执行以下操作: 选择一个之前没有选择的包含一个或多个硬币的单元格,然后将其中一个硬币移动到垂直或水平相邻的单元格中。

最大化包含偶数硬币的单元格数量。

2 3
1 2 3
0 1 1
3
2 2 2 3
1 1 1 2
1 3 1 2
3 2
1 0
2 1
1 0
3
1 1 1 2
1 2 2 2
3 1 3 2
1 5
9 9 9 9 9
2
1 1 1 2
1 3 1 4

提示

制約

  • 入力はすべて整数である
  • 1  H, W  500 1\ \leq\ H,\ W\ \leq\ 500
  • 0  aij  9 0\ \leq\ a_{ij}\ \leq\ 9

Sample Explanation 1

次のように操作を行えば、全てのマスに置かれたコインの数を偶数にできます。 - マス (2, 2) (2,\ 2) に置かれているコインのうち 1 1 枚をマス (2, 3) (2,\ 3) に移動します - マス (1, 1) (1,\ 1) に置かれているコインのうち 1 1 枚をマス (1, 2) (1,\ 2) に移動します - マス (1, 3) (1,\ 3) に置かれているコインのうち 1 1 枚をマス (1, 2) (1,\ 2) に移動します