E. We love Gromah!!

发布时间: 2019年11月18日 17:29   最后更新: 2019年11月18日 17:32   时间限制: 1926ms   内存限制: 817M

在围棋的一种非正式的规则中,执白棋的一方可以有一次连落两粒棋子的机会,但是使用这次机会的回合数必须在棋局开始之前就说好,即只能在自己规定的某一手时连落两子。现在到了 FSX 和 Gromah 对局的关键时刻:FSX 手持白棋并且到了可以连落两子的机会的时候了。由于 FSX 迫切地想挖空 Gromah 的布局,因此他希望能利用这一步提掉尽可能多的黑棋。你非常好奇 FSX 这一手究竟最多能干掉 Gromah 多少目黑棋,于是你拿到了当时的棋盘局面,准备计算出这个最大值。

注意:连续落子意味着你不需要考虑你落下的两粒棋子是否为活棋。即你可以在任意没有落子的地方落子。此外,为了方便,在本题中你不需要考虑全局同形的情况。

如果你不知道围棋的基本规则,可以参考这里:https://baike.baidu.com/item/%E4%B8%AD%E5%9B%BD%E5%9B%B4%E6%A3%8B%E8%A7%84%E5%88%99/5425065?fr=aladdin#1

输入恰好 $19$ 行,每行仅 $19$ 个字符,每个字符表示棋盘上对应位置处的棋子状态:白棋、黑棋或者没有棋子。数据中使用字符 “o” 表示白棋,用字符 “+” 表示黑棋,以及字符 “.” 表示该位置上没有落子。

输出一行一个非负整数,表示最多能提掉的黑棋数目。

复制
...................
...................
...................
...................
...................
...................
...................
........o..........
.......o+o+o.......
.......o+..........
...................
...................
...................
...................
...................
...................
...................
...................
...................
2

保证初始局面所有棋子都是活棋,并且至少有两个点上没有落子。

样例解释

最优的围法如下:

.o...
oxo+o
oxo..
.o...

上面展示的局面中字符 “x” 表示被提掉的黑棋。

2019 fdupc

2019 FDUPC 程序设计校赛网络赛