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。

首页