2025 SCNUCPC

Problem G. Minecon

题目背景

第 39 届 Minecon 于 2048 年在线上举办,进入会馆的方块人将自己的武器装备存放在储物柜中。会上,BugJang 展示了一系列最新特性,意外地导致了服务器的异常。紧急撤离时,大家发现储物柜的区块文件已经被损坏了...

题目描述

现有 n 位方块人,将装备编号分别为 1, 2,3,\dots ,n 的装备,存入了编号为与之对应的 n 个箱子中。由于区块损坏,箱子上的编号被随机打乱了,请你帮助大家确定自己的装备在哪个箱子里。

每个方块人独立进入崩溃的区块查看 n / 2 个箱子,如果在 n / 2 个箱子中找到了自己的装备,它的装备便不会丢失。

由于服务器的不稳定,进入崩溃区块的方块人只能查看箱子里的内容,而无法从箱子中拿走任何东西,同样的,它也无法将自己的获取到的信息发送给其他人,也就是说,对于每个人查看的 n / 2 个箱子,他们可以取得的信息是完全独立,不共享的。

现在请你设计一种查找方式,来尽可能地提高所有人都找到自己装备的概率。

形式上,你需要输出一个 n * (n / 2) 的矩阵 t,设第 i 行第 j 个数为 t_{i,j}

那么玩家 i 查看的第 j 个箱子的编号 a_{i, j} 由以下规则确定:

  • 第一个箱子:a_{i, 1} = t_{i, 1}
  • 后续箱子:设上一个查看的箱子中的装备编号为 a_{i, j-1},则下一个箱子为 (a_{i, j-1} + t_{i, j} - 1) \mod n + 1

若所有人都成功找到自己的装备,即 \forall i \in a_i ;则认为所有人都找到了自己的装备。

输入

输入仅一行,包含一个偶数 n (2 \leq n \leq 100) - 方块人的数量。

输出

输出一个 nn/2 列的矩阵 t,表示每个人查看箱子的方式。

评测方式

本题采用 Special Judge,对于每个输出,随机生成 10^4 个长度为 n 的排列,模拟 10^4 组箱子和装备被打乱的情况。

对于一组数据,若选手的查看方式使得所有人都找到了自己的装备,则认为完成该组任务。

若选手输出的查看方式能满足超过 2500(25\%) 数据,则判定为通过。

样例

标准输入 复制文本
4
标准输出 复制文本
4 2
3 1
2 2
2 0

提示

输入 n = 4

设 SPJ 在某次测试中生成的排列为 p = [2, 3, 4, 1];表示此时:

  • 1 号箱子装有 2 号玩家的装备
  • 2 号箱子装有 3 号玩家的装备
  • 3 号箱子装有 4 号玩家的装备
  • 4 号箱子装有 1 号玩家的装备

对于输出样例:

  • 1 号玩家查看规则为 [4, 2]: 首先查看 4 号箱子,成功找到自己的 p_4 = 1 号装备

    不再继续寻找

  • 2 号玩家查看规则为 [3,1]

    首先查看 3 号箱子,找到编号为 p_3 = 4 的装备

    随后查看 (p_3 + 1 - 1) \mod n + 1 = 1 号箱子,成功找到编号为 p_1 = 2 号装备

  • 3 号玩家查看规则为 [2,2]

    首先查看 2 号箱子,成功找到自己的 p_2 = 3 号装备

    不再继续寻找

  • 4 号玩家查看规则为 [2,0]

    首先查看 2 号箱子,找到编号为 p_2 = 3 号装备

    随后查看 (p_2 + 0 - 1) \mod n + 1 = 3 号箱子,成功找到编号为 p_3 = 4 号装备

在这个排列下,样例输出成功找到了所有玩家的装备,记作通过一组数据;但此输出无法通过所有测试数据

能够通过 25\% 的测试数据的输出,被视为正确答案

登录以提交代码。
单点时限 5 秒
内存限制 512 MB
提交 90
通过 13

A B C D E F G H I J K L