CF906B Seating of Students
题目描述
学生们走进教室准备考试,并以某种方式就坐。老师心想:“他们大概是按这个顺序坐好,方便互相抄袭。我得重新安排座位,让原本相邻的学生在新的安排中不再相邻。”
教室可以表示为 $n$ 行 $m$ 列的矩阵,每个格子里坐着一名学生。如果两个学生所在的格子有公共边,那么他们就是邻居。
我们按照行优先的顺序给学生编号,从 $1$ 到 $n·m$。也就是说,原本坐在第 $i$ 行第 $j$ 列的学生编号为 $(i-1)·m+j$。你需要找出一个 $n$ 行 $m$ 列的新矩阵,矩阵中的所有数字 $1$ 到 $n·m$ 各出现一次,且没有任意一对原本相邻的学生在新矩阵中仍然相邻,或者判断是否不存在这样的矩阵。
输入格式
仅一行包含两个整数 $n$ 和 $m$($1 \leq n, m \leq 10^{5}$,$n·m \leq 10^{5}$),表示所需矩阵的行数和列数。
输出格式
如果不存在这样的矩阵,输出 “NO”。
否则,第一行输出 “YES”,接下来 $n$ 行每行输出 $m$ 个整数,构成所需的矩阵。
说明/提示
第一个样例中的矩阵最初如下:
```
1 2 3 4
5 6 7 8
```
很容易看出,在两个矩阵中没有哪对学生是同时相邻的。
对于第二个样例,仅有两种座位排列,而在两种排列中,编号为 1 和 2 的学生都是相邻的。
由 ChatGPT 5 翻译