CF2034E Permutations Harmony
题目描述
Rayan 想要送 Reyhaneh 一份礼物以赢得她的芳心。然而,Reyhaneh 很挑剔,只会接受一个 $k$-和谐排列集。
我们定义 $k$-和谐排列集为一组 $k$ 个两两不同的排列 $p_1, p_2, \ldots, p_k$,每个排列的长度为 $n$,满足对于任意的下标 $i$ 和 $j$($1 \leq i, j \leq n$),都有:
$$
p_1[i] + p_2[i] + \ldots + p_k[i] = p_1[j] + p_2[j] + \ldots + p_k[j]
$$
你的任务是帮助 Rayan,对于给定的 $n$ 和 $k$,要么给出一个合法的 $k$-和谐排列集,要么判断这样的集合不存在。
我们称长度为 $n$ 的序列为排列,当且仅当它包含了 $1$ 到 $n$ 的所有整数且每个整数恰好出现一次。
输入格式
第一行包含一个整数 $t$($1 \leq t \leq 1000$),表示测试用例的数量。
每个测试用例包含两个整数 $n$ 和 $k$($1 \leq n, k \leq 10^5$)。所有测试用例中 $n \cdot k$ 的总和不超过 $5 \cdot 10^5$。
输出格式
对于每个测试用例,如果存在 $k$-和谐排列集,第一行输出 YES。接下来输出 $k$ 行,每行包含一个 $1$ 到 $n$ 的不同排列。
如果不存在这样的集合,输出 NO。
你可以用任意大小写输出 "YES" 和 "NO"(例如 "yEs"、"yes"、"Yes" 都视为肯定回答)。
如果有多组合法答案,可以输出任意一组。
说明/提示
在样例 1 中,$p_1 = [1, 2, 3]$,$p_2 = [2, 3, 1]$,$p_3 = [3, 1, 2]$。很容易看出 $p_1[1] + p_2[1] + p_3[1] = p_1[2] + p_2[2] + p_3[2] = p_1[3] + p_2[3] + p_3[3] = 6$。
在样例 2 中,$p_1 = [1, 2, 3, 4]$,$p_2 = [4, 3, 2, 1]$。很容易看出 $p_1[1] + p_2[1] = p_1[2] + p_2[2] = p_1[3] + p_2[3] = p_1[4] + p_2[4] = 5$。
在样例 3 中,由于 $p_1$ 中有五个不同的元素,很明显答案是 "No"。
由 ChatGPT 4.1 翻译