#P11223. [COTS 2019] 传话游戏 Pokvareni

    ID: 10679 Type: RemoteJudge 1000ms 500MiB Tried: 0 Accepted: 0 Difficulty: 6 Uploaded By: Tags>2019Special Judge构造COCI(克罗地亚)

[COTS 2019] 传话游戏 Pokvareni

题目背景

译自 Izborne Pripreme 2019 (Croatian IOI/CEOI Team Selection) D1T3。1s,0.5G\texttt{1s,0.5G}

题目描述

提示:搬题人在题面的最后提供了简要题意。

老师带着 NN 个小朋友玩传话游戏。他们都知道同样的 MM 个单词,我们不妨编号为 1M1\sim M

游戏进行方式是这样的:

  • 小朋友们被排成一列;
  • 老师对第一个小朋友耳语单词 11
  • 对于 1i<N1\le i\lt N,第 ii 个小朋友对第 (i+1)(i+1) 个小朋友耳语听到的词;
  • NN 个小朋友大声说出他听到的词。

由于当时旁边有 OIer 在大力敲打键盘,游戏受到了干扰,小朋友常常听错词。但是,神奇的是,对于第 ii 个小朋友,无论谁对他耳语,以及他在队列中的哪个位置,对他耳语相同的词 AA,他都会听到相同的词 BBA=BA=B 是可能的)。

老师重复进行了 N!N! 局游戏,每种排列都试了一次。她注意到,有一个词恰好被大声说出 KK 次。老师很好奇,于是找来了你,来复现这样的情况。

具体地说,给定整数 N,KN,K。构造正整数 M,XM,X,以及一种小朋友误听单词的方式,使得在 N!N! 局游戏中,XX 恰好被大声说出 KK 次。

找到的 MM 越小,得分越高,详见【计分方式】。

简单地说:给定 N,KN,K。构造 NN[1,M][1,M][1,M]\to [1,M] 的函数 f1(x),f2(x),,fN(x)f_1(x),f_2(x),\ldots,f_{N}(x)MM 是你选定的正整数),使得:

  • p1,p2,,pNp_1,p_2,\ldots,p_N 取遍 N!N!1N1\sim N 的排列;
    • N!N! 种排列 pp 中,$f_{p_N}(f_{p_{N-1}}\cdots(f_{p_2}(f_{p_1}(1)))\cdots)$ 取到的值放入多重集 SS。则存在 XSX\in S,使得 XX 恰好SS 中出现 KK 次。

这里,[1,M][1,M] 指的是 [1,M]Z[1,M]\cap \mathbb{Z}

目标是使 MM 尽量小。

输入格式

本题单个测试点内含有多组测试数据。

第一行,正整数 id\mathrm{id},表示子任务编号;

第二行,正整数 TT,表示测试数据组数;

接下来 TT 行,每行两个整数 N,KN,K,描述一组数据。

输出格式

对于每组数据,输出 (N+1)(N+1) 行:

第一行,两个正整数 M,XM,X。你需要保证 1XM1041\le X\le M\le 10^4

接下来 NN 行,每行 MM 个正整数。

ii 行第 jj 个正整数 fi(j)f_{i}(j) 表示:如果对第 ii 个小朋友耳语 jj,他会听到 fi(j)f_{i}(j)。你需要保证 fi(j)[1,M]f_i(j)\in [1,M]

1
2
3 2
2 1
3 3
2 1 3
3 2 2
1 3 2
2 1
1 1
2 2
2
2
3 3
4 0
6 2
1 2 3 4 5 6
6 5 4 3 2 1
2 4 1 4 3 2
2 2
1 1
1 1
1 1
1 1

提示

对于 100%100\% 的数据,保证:

  • id{1,2}\mathrm{id}\in \{1,2\}
  • 1N121\le N\le 12
  • 0KN!0\le K\le N!
  • 1T101\le T\le 10

【计分方式】

本题分为两个子任务计分。

  • Subtask 113030 pts):保证 1N71\le N\le 7

    只要构造方案合法,就能获得满分。否则得 00 分。

  • Subtask 227070 pts):保证 1N121\le N\le 12

    如果输出不合法,得 00 分。

    否则单组测试数据得分为 70k70\cdot kkk 按照下式计算:

    $$k= \begin{cases} \displaystyle 1, & M\le N+1 \\ \displaystyle 0.7 + \frac{0.15}{M-N-1}\, \in [0.7,0.85], & N+1\lt M\le N+5 \\ \displaystyle 0.5 + 0.05 \left(5-\frac{M}{N}\right) \, \in[0.5,0.7], & N+5\lt M\le 5\cdot N \\ \displaystyle \frac{0.5}{\log_{10}(M/5N)+1}\, \in [0,0.5]& 5\cdot N\lt M\le 10^4 \\ \end{cases} $$

    单个测试点得分是所有测试数据中得分的最小值。例如,样例 22 的两组数据的 kk 分别为 0.77,10.77,1。该输出得 0.7700.7\cdot 70 分。