CF1634C OKEA

题目描述

人们担心计算机会变得太聪明并接管世界,但真正的问题是它们太笨了,而且它们已经接管了世界。 —— Pedro Domingos 你在一家著名的百货公司工作,该公司采用了领先的技术,并实行机械化作业——也就是说,使用了机器人! 你所在的部门销售 $n \cdot k$ 件商品。第一件商品售价 $1$ 美元,第二件售价 $2$ 美元,依此类推:第 $i$ 件商品售价为 $i$ 美元。这些商品被摆放在货架上,形成一个矩形网格:共有 $n$ 个货架,每个货架上正好有 $k$ 件商品。我们用 $a_{i,j}$ 表示第 $i$ 个货架($1 \le i \le n$)上从左往右的第 $j$ 件商品($1 \le j \le k$)的价格。 有时,机器人会好奇地思考这样一个问题:对于某个货架 $i$ 和区间 $l \le r$,商品 $a_{i,l}, a_{i,l+1}, \ldots, a_{i,r}$ 的平均价格(算术平均值)是多少?不幸的是,老旧的机器人只能处理整数。如果平均价格不是整数,它们就会宕机。 你关心机器人的福祉。你希望安排商品,使得机器人理论上不会宕机。具体来说,你需要选择一个二维数组 $a$,使得: - 每个 $1$ 到 $n \cdot k$(包含)之间的数字恰好出现一次。 - 对于任意的 $i, l, r$,第 $i$ 个货架上从第 $l$ 件到第 $r$ 件商品的平均价格都是整数。 请判断是否存在这样的商品摆放方式。如果存在,请给出任意一种可行的摆放方案。

输入格式

第一行包含一个整数 $t$($1 \le t \le 500$),表示测试用例的数量。 每个测试用例包含一行,包含两个整数 $n$ 和 $k$($1 \le n, k \le 500$),分别表示货架的数量和每个货架的商品数量。 保证所有测试用例中 $n$ 的总和不超过 $500$,$k$ 的总和也不超过 $500$。

输出格式

对于每个测试用例,输出一行答案。 如果存在这样的摆放方式,输出一行 "YES"。接下来输出 $n$ 行,每行 $k$ 个数字,表示每个货架上的商品价格。每个 $1$ 到 $n \cdot k$ 的数字在输出中恰好出现一次。 如果不存在这样的摆放方式,输出一行 "NO"。

说明/提示

由 ChatGPT 4.1 翻译