#P15623. [ICPC 2022 Jakarta R] Grid Game

[ICPC 2022 Jakarta R] Grid Game

说明

给定一个大小为 N×MN \times M 的网格 AA。行编号从 11NN,列编号从 11MM。位于第 rr 行、第 cc 列的单元格记作 (r,c)(r, c)

单元格 (r,c)(r, c) 包含一个整数 Ar,cA_{r,c},其值可以是 1-1 或一个非负整数。如果 Ar,c=1A_{r,c} = -1,则表示单元格 (r,c)(r, c)不可通行的。否则,单元格 (r,c)(r, c)可通行的。

两名玩家将在这个网格上轮流进行游戏。在一个回合中,玩家需要执行以下操作:

  1. 选择一个写有整数的单元格,玩家从站在该单元格开始。设该起始单元格上的整数为 xx
  2. 选择一个非负整数 yy,满足 y<xy < x
  3. 假设玩家当前站在单元格 (r,c)(r, c) 上。将 Ar,cA_{r,c} 的值更新为 Ar,cxyA_{r,c} \oplus x \oplus y,其中 \oplus 是按位异或运算符。
  4. 如果单元格 (r+1,c)(r + 1, c) 或单元格 (r,c+1)(r, c + 1) 是可通行的,则玩家必须移动到这两个可通行单元格中的一个(由玩家选择)。然后,重复步骤 3。
  5. 如果玩家无法再移动,则玩家将走出网格并结束他的回合。

如果一名玩家在他的回合中无法进行游戏(即没有正整数的单元格),则该玩家输掉游戏,对手获胜。

假设双方都采取最优策略,请确定谁将赢得游戏。

输入格式

输入以两个整数 NN MM1N,M5001 \leq N, M \leq 500)开始,表示网格 AA 的大小。接下来的 NN 行,每行包含 MM 个整数 Ar,cA_{r,c}0Ar,c1090 \leq A_{r,c} \leq 10^9Ar,c=1A_{r,c} = -1),表示单元格 (r,c)(r, c) 中包含的整数。

输出格式

如果先手玩家获胜,则输出 first。如果后手玩家获胜,则输出 second

5 6
0 0 0 0 0 0
0 3 3 0 0 0
0 0 3 -1 0 0
0 0 3 3 3 3
0 0 -1 -1 -1 -1
first
2 2
1 1
2 -1
first

1 1
-1
second

提示

样例输入/输出 #1 的解释

先手玩家可以从 (2,2)(2, 2) 开始他的回合,并选择 y=0y = 0。然后,他可以沿着写有整数 33 的单元格移动,并将这些单元格更新为 330=03 \oplus 3 \oplus 0 = 0。在先手玩家的回合结束后,网格上不再有正整数的单元格,因此后手玩家无法进行游戏。

样例输入/输出 #2 的解释

先手玩家在第一回合有 55 种可行的选择,如下图所示。每种选择有不同的起始单元格(缩写为 SC)、yy 的值以及先手玩家采取的路径。所采取的路径由红色阴影单元格表示。

:::align{center} :::

先手玩家为了确保胜利可以采取的最优策略是选项 1122

样例输入/输出 #3 的解释

初始网格中没有正整数的单元格。后手玩家默认获胜。

翻译由 DeepSeek 完成