P16050 [ICPC 2022 NAC] Tic Tac Toe Counting
题目描述
井字棋是一种简单的儿童游戏。它在一个 $3 \times 3$ 的网格上进行。第一名玩家在 $9$ 个格子中的任意一个放置 X。下一名玩家在剩下的 $8$ 个格子中的任意一个放置 O。玩家们轮流在空格中交替放置 X 和 O,直到某名玩家的符号连成一条线,或者网格被填满为止。如果某名玩家在任意一行、一列或两条对角线中的任意一条上连成三个自己的符号,则该玩家获胜,游戏结束。
弗雷德和萨姆正在玩一局井字棋。在游戏进行到中途时,弗雷德产生了疑问:“从这个局面继续往下进行的所有对局中,有多少局是 X 获胜?有多少局是 O 获胜?”如果两局游戏的落子顺序不同,则视为不同的对局,即使它们在某个时刻的网格局面完全相同。
给定若干网格局面,首先判断它们是否能在井字棋对局中达到;如果能够达到,则计算从这个局面开始(包含该局面)的所有后续对局中,X 获胜的对局数和 O 获胜的对局数。
输入格式
输入的第一行包含一个整数 $t$($1 \le t \le 10^5$),表示测试用例的网格数量。
接下来的 $t$ 行,每行包含一个字符串 $s$($|s| = 9$),字符串仅由字符 '.'、'X' 和/或 'O' 组成。这些是测试用例的网格。前三个字符表示第一行,接下来三个字符表示第二行,最后三个字符表示最后一行,其中 '.' 表示空格。例如,字符串 `XX..O....` 表示以下网格:
:::align{center}

:::
输出格式
对于每个测试用例,输出两个空格分隔的整数。如果该网格在井字棋对局中无法达到,则输出 $-1$ $-1$。如果该网格可以达到,则输出从这个局面开始(包含该局面)的所有对局中 X 获胜的数量,随后输出 O 获胜的数量。
说明/提示
翻译由 DeepSeek V3.2 完成