AT_arc107_c [ARC107C] Shuffle Permutation

题目描述

给定一个 $N \times N$ 的矩阵和一个整数 $K$。该矩阵的第 $i$ 行第 $j$ 列的元素为 $a_{i,j}$。这个矩阵包含了 $1, 2, \dots, N^2$ 的所有数,每个数恰好出现一次。 sigma 君可以按任意顺序、任意次数进行以下两种操作: - 对于所有 $i$($1 \leq i \leq N$),如果存在 $x, y$($1 \leq x < y \leq N$)使得 $a_{i,x} + a_{i,y} \leq K$,则可以交换矩阵的第 $x$ 列和第 $y$ 列。 - 对于所有 $i$($1 \leq i \leq N$),如果存在 $x, y$($1 \leq x < y \leq N$)使得 $a_{x,i} + a_{y,i} \leq K$,则可以交换矩阵的第 $x$ 行和第 $y$ 行。 问最终能够得到多少种不同的矩阵?请输出答案对 $998244353$ 取模后的结果。

输入格式

输入以如下格式从标准输入读入: > $N$ $K$ $a_{1,1}$ $a_{1,2}$ $\dots$ $a_{1,N}$ $a_{2,1}$ $a_{2,2}$ $\dots$ $a_{2,N}$ $\dots$ $a_{N,1}$ $a_{N,2}$ $\dots$ $a_{N,N}$

输出格式

输出最终能够得到的不同矩阵的种数,对 $998244353$ 取模。

说明/提示

### 限制条件 - $1 \leq N \leq 50$ - $1 \leq K \leq 2N^2$ - $a_{i,j}$ 是 $1, 2, \dots, N^2$ 的一个排列 - 输入的所有数均为整数 ### 样例解释 1 例如,可以选择 $x=1, y=2$ 交换列向量,得到如下矩阵: ``` 2 3 7 8 4 9 6 1 5 ``` 之后再选择 $x=1, y=3$ 交换行向量,得到如下矩阵: ``` 6 1 5 8 4 9 2 3 7 ``` 由 ChatGPT 4.1 翻译