P13607 [NWRRC 2022] Joking?

题目描述

Julia 想为 $n$ 个玩家设计一个新的桌游。作为游戏的一部分,玩家们需要决定他们的出场顺序。为了保证游戏的公平性,每一种玩家顺序的排列都应该被等概率地选中。 为了帮助玩家们决定这个排列,Julia 想要制作 $n$ 个不同的 $k$ 面骰子。每个玩家掷自己的骰子并查看点数。点数最小的玩家先行动,第二小的玩家第二个行动,依此类推。为了避免出现平局,所有骰子上的数字都必须互不相同。 这本可以是一个很好的数学问题,但由于这是一个编程竞赛,我们允许一定的误差。你需要为这个游戏设计骰子,但每种排列出现的概率可以有微小的差异。只要任意两种排列的概率的相对误差不超过 $0.2\%$,你的方案就会被接受。 形式化地说,掷完所有 $n$ 个骰子后共有 $k^n$ 种不同的结果。对于每一个排列 $P$,我们可以计算出导致该排列的方案数 $f(P)$。对于任意两个排列 $P$ 和 $Q$,都应满足:$\frac{|f(P) - f(Q)|}{\max(f(P), f(Q))} \le 0.002$。 你可以选择任意的 $k$,但 $k$ 不能超过 $120$。

输入格式

一行一个整数 $n$,表示玩家人数($2 \le n \le 5$)。

输出格式

第一行输出一个整数 $k$,表示每个骰子的面数($1 \le k \le 120$)。 接下来的 $n$ 行,每行描述一个骰子。对于每个骰子,输出 $k$ 个整数,范围为 $1$ 到 $k \cdot n$。所有骰子上的数字必须互不相同。

说明/提示

在第一个样例测试中,两种玩家排列的概率都是 $\frac{1}{2}$。 在第二个样例测试中,共有 $16^3=4096$ 种可能的情况。排列 $[2, 1, 3]$ 和 $[3, 1, 2]$ 各出现 $682$ 次,其余每个排列出现 $683$ 次。因此,最可能和最不可能的排列之间的相对误差为 $\frac{683-682}{683} \approx 0.146\%$。 由 ChatGPT 4.1 翻译