UOJ Logo Universal Online Judge

UOJ

#959. 【USsR #1】积木对战

附件下载 统计

English Problem Statement

蔡德仁和艾莉芬正在玩游戏。

她们有一个 $n\times n$ 的网格棋盘,每个格子上可能有一块积木,也可能是空的。

积木有 $k$ 种可能的颜色。玩家可以做的一次操作是选上下左右四个方向之一倾斜棋盘,然后所有积木就会向那个方向滑到头,直到碰到边缘或者其它积木。

可以用一个矩阵表示棋盘状态,$1$ 到 $k$ 分别表示该位置有对应颜色的积木,$0$ 表示该位置没有积木。

这是一个例子,是同一个局面分别做上下左右四个方向操作的结果:

020     002 || 020     321 || 020     200 || 020     000 ||
301 [→] 031 || 301 [↑] 012 || 301 [←] 310 || 301 [↓] 021 ||
012     012 || 012     000 || 012     120 || 012     312 ||

现在蔡德仁和艾莉芬开始了游戏。游戏规则如下:

  1. 首先艾莉芬在棋盘上放置一些积木,这时候所有积木都没有涂色。

  2. 然后蔡德仁可以对棋盘进行任意次操作,然后交给艾莉芬再进行任意次操作,之后棋盘会进行左、下两次操作把所有积木收拢到左下角。

  3. 然后艾莉芬可以对棋盘上的积木进行涂色。

  4. 然后蔡德仁可以对棋盘进行任意次操作,然后交给艾莉芬再进行任意次操作,之后棋盘会进行左、下两次操作把所有积木收拢到左下角。

现在已知全部操作完毕之后棋盘的最终状态。(以上的任意次操作都可以是 $0$ 次)

艾莉芬有些好奇,她想知道她有多少种放置积木和涂色的方案满足,无论蔡德仁如何操作,艾莉芬都有办法能达到这个最终状态。

两种方案不同,当且仅当艾莉芬放置积木后(第 1 步结束)的棋盘状态不同(这时只考虑积木所在的位置集合)或者涂色后(第 3 步结束)的棋盘状态不同。

她知道这个答案可能很大,所以她想请你算出答案对 $998244353$ 取模的结果。

输入格式

第一行两个正整数 $n,k$,表示棋盘大小和颜色数。

接下来 $n$ 行每行 $n$ 个 $0$ 到 $k$ 的整数,空格分隔,表示最终的棋盘状态。其中第 $i$ 行第 $j$ 个数表示从上到下第 $i$ 行从左到右第 $j$ 列的状态。

输出格式

输出一行一个整数表示答案,即满足无论蔡德仁如何操作,艾莉芬都有办法能达到这个最终状态的初始棋盘种类数,答案对 $998244353$ 取模。

样例

样例 1

input
3 2
1 2 0
1 2 0
1 1 0
output
3
explanation

三种可能的初始状态分别为:

1 2 0
1 2 0
1 1 0
0 1 2
0 1 2
0 1 1
1 0 2
1 0 2
1 0 1

样例 2~5

见下发文件中的 ex_board*.in/out

其中样例 2 满足子任务 2 的限制,样例 3 满足子任务 4 的限制,样例 4 满足子任务 5 的限制,样例 5 满足子任务 7 的限制。

数据范围与提示

对于所有数据,保证:$1 \le n, k \le 1000$,且输入给出的最终状态一定位于棋盘左下角。

本题采用子任务捆绑测试。

子任务编号 分值 $n \le$ $k \le$ 额外限制
$1$ $10$ $4$ $1$
$2$ $10$ $50$ $1$ 最终状态为严格阶梯(第 $i$ 行不为 $0$ 的恰好是前 $i$ 个数)
$3$ $10$ $50$ $1$
$4$ $10$ $1000$ $1$
$5$ $10$ $50$ $1000$ 最终状态为严格矩形(存在常数 $x,y$ 使得所有非 $0$ 的恰好是行号 $\ge x$,列号 $\le y$ 的数)
$6$ $20$ $50$ $1000$
$7$ $30$ $1000$ $1000$

时间限制:$1\texttt{s}$

空间限制:$512\texttt{MB}$