#P11223. [COTS 2019] 传话游戏 Pokvareni
[COTS 2019] 传话游戏 Pokvareni
题目背景
译自 Izborne Pripreme 2019 (Croatian IOI/CEOI Team Selection) D1T3。。
题目描述
提示:搬题人在题面的最后提供了简要题意。
老师带着 个小朋友玩传话游戏。他们都知道同样的 个单词,我们不妨编号为 。
游戏进行方式是这样的:
- 小朋友们被排成一列;
- 老师对第一个小朋友耳语单词 ;
- 对于 ,第 个小朋友对第 个小朋友耳语听到的词;
- 第 个小朋友大声说出他听到的词。
由于当时旁边有 OIer 在大力敲打键盘,游戏受到了干扰,小朋友常常听错词。但是,神奇的是,对于第 个小朋友,无论谁对他耳语,以及他在队列中的哪个位置,对他耳语相同的词 ,他都会听到相同的词 ( 是可能的)。
老师重复进行了 局游戏,每种排列都试了一次。她注意到,有一个词恰好被大声说出 次。老师很好奇,于是找来了你,来复现这样的情况。
具体地说,给定整数 。构造正整数 ,以及一种小朋友误听单词的方式,使得在 局游戏中, 恰好被大声说出 次。
找到的 越小,得分越高,详见【计分方式】。
简单地说:给定 。构造 个 的函数 ( 是你选定的正整数),使得:
- 令 取遍 个 的排列;
- 将 种排列 中,$f_{p_N}(f_{p_{N-1}}\cdots(f_{p_2}(f_{p_1}(1)))\cdots)$ 取到的值放入多重集 。则存在 ,使得 恰好在 中出现 次。
这里, 指的是 。
目标是使 尽量小。
输入格式
本题单个测试点内含有多组测试数据。
第一行,正整数 ,表示子任务编号;
第二行,正整数 ,表示测试数据组数;
接下来 行,每行两个整数 ,描述一组数据。
输出格式
对于每组数据,输出 行:
第一行,两个正整数 。你需要保证 。
接下来 行,每行 个正整数。
第 行第 个正整数 表示:如果对第 个小朋友耳语 ,他会听到 。你需要保证 。
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
提示
对于 的数据,保证:
- ;
- ;
- ;
- 。
【计分方式】
本题分为两个子任务计分。
-
Subtask ( pts):保证 。
只要构造方案合法,就能获得满分。否则得 分。
-
Subtask ( pts):保证 。
如果输出不合法,得 分。
否则单组测试数据得分为 , 按照下式计算:
$$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} $$单个测试点得分是所有测试数据中得分的最小值。例如,样例 的两组数据的 分别为 。该输出得 分。