#P3930. SAC E#1 - 一道大水题 Knight

    ID: 4650 远端评测题 3000ms 500MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>洛谷原创O2优化广度优先搜索 BFS进制洛谷月赛状压 DP

SAC E#1 - 一道大水题 Knight

题目背景

毒奶色和 F91 是好朋友。

题目描述

他们经常在一起玩一个游戏,不,不是星际争霸,是国际象棋。

毒奶色觉得 F91 是一只鸡。他在一个 n×nn \times n 的棋盘上用黑色的城堡(车)、骑士(马)、主教(象)、皇后(副)、国王(帅)、士兵(卒)摆了一个阵。

然而 F91 觉得毒奶色是一只鸡。他发起了挑战:他要操纵一个白色骑士,不经过任何一个棋子的攻击范围(F91 可以连续行动,而毒奶色的棋子不会动,除非白骑士进入了对方的攻击范围),并击杀毒奶色的国王(即进入黑国王所在的位置)。

请告诉 F91 他最少需要多少步骤来完成这一项壮举。

注意:

  1. 当 F91 的白骑士走到毒奶色的棋子所在的格子上的时候,会击杀(吃掉)该棋子。这个棋子也就不再对F91的白骑士有威胁了。

  2. 如果白骑士开场就在黑子的攻击范围内,则立刻被击杀、F91立刻失败。

  3. 即使白骑士在攻击王的瞬间进入了其他棋子攻击范围(即其他棋子“看护”着王所在的格子),依然算F91获胜。

攻击范围:

城堡:横、竖方向所有位置,直到被一个其他棋子阻拦。

..#..
..#..
##C##
..#..
..#..

骑士:横 2211 或者横 1122 的所有位置(最多 88 个,类似日字)。

.#.#.
#...#
..K..
#...#
.#.#.

主教:斜向(45°45 \degree)所有位置,直到被一个其他棋子阻拦。

#...#
.#.#.
..B..
.#.#.
#...#

皇后:城堡和主教的结合体(既能横 / 竖向攻击,也能 45°45 \degree 角斜向攻击,直到被其他棋子阻挡)。

#.#.#
.###.
##Q##
.###.
#.#.#

国王:身边 88 连通位置的 88 个格子。

.....
.###.
.#X#.
.###.
.....

士兵:左下方 / 右下方(45°45 \degree)的格子(最多 22 个)。

.....
.....
..P..
.#.#.
.....

其中字母表示棋子类型,参考输入格式。

# 表示可攻击范围。

输入格式

输入包含多组数据。

每一组数据中,第一行一个整数 nn 表示棋盘规模。

接下来 nn 行,每行一个长度为 nn 的字符串。描述棋盘的格局。

其中:

. 表示空

O 表示白骑士

C 表示黑城堡

K 表示黑骑士

B 表示黑主教

Q 表示黒皇后

X 表示黑国王

P 表示黑士兵

输出格式

对于每一个测试数据,每行输出一个整数,表示 F91 的最小步数。

如果无论 F91 如何行动也无法击杀黑国王,输出 -1

8
...X....
........
........
........
........
........
........
......O.
4
8
......X.
........
.O......
...P.Q.C
.....B..
........
...K....
........
7

提示

输入最多包含5组数据。

  • 对于 20%20\% 的数据,毒奶色只有国王。n8n \le 8

  • 对于 30%30\% 的数据,毒奶色只有国王、骑士。n8n \le 8

对于 60%60\% 的数据,毒奶色只有国王、骑士、王后。n50n \le 50

对于 100%100\% 的数据,毒奶色可以有全套 1616 颗棋子(22 城堡,22 骑士,22 主教,11 后,11 王,88 兵)。n50n \le 50

温馨提示:

时间限制可能比想象之中还要更紧一点,请注意实现细节以保证性能。

样例 22 解释:

一种可行的做法是:

......X.
.3..6...
.O5.....
4.2P.Q.C
1....B..
........
...K....
........