U2876.空和荧的小游戏
NOI/NOI+/CTSC
通过率:0%
时间限制:1.00s ~ 10.00s
内存限制:128MB ~ 512MB
题目描述
这些天,空和荧喜欢上了一种新的棋类游戏。
这个游戏是在一个 n 行 m 列的棋盘上进行的。游戏开始之前,棋盘上有一个格子是空(是空不是空)的,其它的格子中都放置了一枚摩拉,摩拉或者是正面,或者是反面。
每一局游戏总是空先操作,之后双方轮流操作,具体操作为:
1、空每次操作时,选择一枚与空格相邻的正面摩拉,将它移进空格。
2、荧每次操作时,选择一枚与空格相邻的反面,将它移进空格。
第一个不能按照规则操作的人输掉游戏。为了描述方便,下面将操作“将第 x 行第 y 列中的摩拉移进空格中”记为M(x,y)。
最近空总是输掉游戏,而且荧格外嚣张,还想撅空,于是空想请他的好朋友——你——来帮助他。他带来了一局输给荧的游戏的实录,请你指出这一局游戏中所有他“愚人众执行官第六席”的地方,若为0请输出“NO”。
注意:
1、两个格子相邻当且仅当它们有一条公共边。
2、空的操作是“愚人众执行官第六席”的,当且仅当,在这次操作前他有必胜策略,而这次操作后荧有必胜策略。
输入格式
输入的第一行包含两个正整数 n,m。
接下来 n 行描述初始棋盘。其中第 i 行包含 m 个字符,每个字符都是大写英文字母 X、大写英文字母 O 或点号 . 之一,分别表示对应的棋盘格中有正面摩拉,有反面摩拉和没有摩拉。其中点号 . 恰好出现一次。
接下来一行包含一个整数 k(1≤k≤1000),表示空和荧各进行了 k 次操作。
接下来 2k 行描述一局游戏的过程。其中第 2i−1 行是空的第 i 次操作(编号为 i 的操作) ,第 2i 行是荧的第 i 次操作。每个操作使用两个整数 x,y 来描述,表示将第 x 行第 y 列中的棋子移进空格中。
输入保证整个棋盘中只有一个格子没有棋子, 游戏过程中空和荧的每个操作都是合法的,且最后荧获胜。
输出格式
输出的第一行包含一个整数 r,表示空愚人众执行官第六席的总次数。
接下来 r 行按递增的顺序给出空“愚人众执行官第六席”的操作编号。其中第 i 行包含一个整数 a[i] 表示空第 i 个愚人众执行官第六席的操作是他在游戏中的第 a[i] 次操作
输入输出样例
输入#1
1 6 XO.OXO 1 1 2 1 1
输出#1
1 1
输入#2
3 3 XOX O.O XOX 4 2 3 1 3 1 2 1 1 2 1 3 1 3 2 3 3
输出#2
NO
输入#3
4 4 OOXX OXXO OO.O XXXO 2 3 2 2 2 1 2 1 3
输出#3
2 1 2
说明/提示
1≤n≤40,1≤m≤40,1≤k≤1000。