注意点

この問題では、いろんな意味でAIを使用することを推奨します。
また、作問者はこの問題にACするコードをC++でしか書いていないので、Pythonなどの他の言語でもACできる保証はありません。

問題文

勝者が空マスを得るオセロで双方が最後の 自石数相手石数自石数-相手石数 を最大化した時の値は?

制約

1T321 \leq T \leq 32
TT は整数
ccB または W
S1,S2,,S8S_1,S_2,\ldots,S_8BW. からなる長さ 88 の文字列
・与えられる局面には初期局面から到達可能
・与えられる盤面の空きマスの数は 2525 以下

入力

11 つの入力では TT 個のテストケースが与えられる。
入力は以下の形式で与えられる。

TT
case1case_1
case2case_2
\vdots
caseTcase_T

各テストケースは以下の形式で与えられる。

cc
S1S_1
S2S_2
S3S_3
S4S_4
S5S_5
S6S_6
S7S_7
S8S_8

現在の手番を表す文字 cc が与えられる。 ccB のとき黒番で、 ccW のとき白番である。
続く 88 行に、盤面の状態を表す文字列 S1,S2,,S8S_1,S_2,\ldots,S_8 が改行区切りで与えられる。
オセロ盤の上から数えて ii 行目、左から数えて jj 列目にあたるマスを (i,j)(i,j) と呼ぶ。
マス (i,j)(i,j) には、 SiS_ijj 文字目が B のとき黒石が、 W のとき白石が置かれていて、 . のとき何も置かれていない。

出力

TT 行出力せよ。
ii 行目には caseicase_i の局面から、黒プレイヤー、白プレイヤーのそれぞれが「終局時における 自分の色の石の数相手の色の石の数自分の色の石の数-相手の色の石の数 を最大化するために最適な行動」を取り続けたとき(すなわち最善を尽くしたとき)の、終局時における cの石の数cの反対の色の石の数色cの石の数-色cの反対の色の石の数 を整数で出力せよ。
ただし、終局時に残っている空きマスには勝者の色の石が置かれ、勝者の色の石の数に加算される
例えば黒61-白1で黒が勝った場合、2つの空きマスに黒石が置かれ、黒石の数は61ではなく63として扱われる。

ただし、各テストケースについて真の値との絶対誤差が 1010 以下であれば正答と判定される。

入力例1

5
B
BBBBBB.W
BBBBBBBW
BWWWWBBW
WWWBBBBW
WWBBBBBW
BWBBBBB.
BBBB....
BBBB....
W
BBBBBB..
BBBWW...
BWWWWWW.
WWWBWWWW
WWBBWWWB
WWWWWBWW
..W.WWWW
BBBWWWWW
B
BBBBBBWW
BBBBBWBW
BWWWWBBW
WWWBBBBW
WWBBBBBW
BWBBBBB.
BBBB....
BBBB....
W
BBBBBB..
BBBWW...
BWWWWWW.
WWWBWWWW
WWBBWWWB
WWWBWBWW
..WBWWWW
BBBWWWWW
W
BBBBBBB.
BBBBW...
BBBBW...
BBBWW.W.
BBWBWW..
BBBWWWWB
BBBWWWBB
BBBBBBBB

出力例1

-6
-24
2
-12
-54

55 つ目のテストケースについて、真の値は 64-64 だが、55 行目に出力された 54-54 は絶対誤差が 1010 以下なので正答と判定される。

追記

2026/08/03 23:36 問題文のわかりにくい部分を修正
2026/08/05 12:34 問題文に重大な誤りがあったため修正
2026/08/06 03:10 問題文が嘘にならないように修正

提出


Go (1.21)