UOJ Logo Universal Online Judge

UOJ

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

附件下载 统计

English Problem Statement

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

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

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

可以用一个矩阵表示棋盘状态,1k 分别表示该位置有对应颜色的积木,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 行每行 n0k 的整数,空格分隔,表示最终的棋盘状态。其中第 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 的限制。

数据范围与提示

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

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

子任务编号 分值 n k 额外限制
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 的恰好是行号 x,列号 y 的数)
6 20 50 1000
7 30 1000 1000

时间限制:1s

空间限制:512MB