#P13607. [NWRRC 2022] Joking?

[NWRRC 2022] Joking?

Description

Julia 想为 nn 个玩家设计一个新的桌游。作为游戏的一部分,玩家们需要决定他们的出场顺序。为了保证游戏的公平性,每一种玩家顺序的排列都应该被等概率地选中。

为了帮助玩家们决定这个排列,Julia 想要制作 nn 个不同的 kk 面骰子。每个玩家掷自己的骰子并查看点数。点数最小的玩家先行动,第二小的玩家第二个行动,依此类推。为了避免出现平局,所有骰子上的数字都必须互不相同。

这本可以是一个很好的数学问题,但由于这是一个编程竞赛,我们允许一定的误差。你需要为这个游戏设计骰子,但每种排列出现的概率可以有微小的差异。只要任意两种排列的概率的相对误差不超过 0.2%0.2\%,你的方案就会被接受。

形式化地说,掷完所有 nn 个骰子后共有 knk^n 种不同的结果。对于每一个排列 PP,我们可以计算出导致该排列的方案数 f(P)f(P)。对于任意两个排列 PPQQ,都应满足:f(P)f(Q)max(f(P),f(Q))0.002\frac{|f(P) - f(Q)|}{\max(f(P), f(Q))} \le 0.002

你可以选择任意的 kk,但 kk 不能超过 120120

Input Format

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

Output Format

第一行输出一个整数 kk,表示每个骰子的面数(1k1201 \le k \le 120)。

接下来的 nn 行,每行描述一个骰子。对于每个骰子,输出 kk 个整数,范围为 11knk \cdot n。所有骰子上的数字必须互不相同。

2
2
1 4
2 3
3
16
3 7 9 10 12 17 18 19 28 32 33 35 38 40 43 48
1 2 6 13 14 20 22 26 27 29 30 36 37 39 44 46
4 5 8 11 15 16 21 23 24 25 31 34 41 42 45 47

Hint

在第一个样例测试中,两种玩家排列的概率都是 12\frac{1}{2}

在第二个样例测试中,共有 163=409616^3=4096 种可能的情况。排列 [2,1,3][2, 1, 3][3,1,2][3, 1, 2] 各出现 682682 次,其余每个排列出现 683683 次。因此,最可能和最不可能的排列之间的相对误差为 6836826830.146%\frac{683-682}{683} \approx 0.146\%

由 ChatGPT 4.1 翻译