#P11946. [KTSC 2025] 信竞天择 2 / evolution
[KTSC 2025] 信竞天择 2 / evolution
题目背景
版权信息:译自 2025年度 国际情报 올림피아드 (Olympiad) 代表学生 选拔考试 R2T1。[CC BY-NC-SA 4.0]
你需要在文件头添加以下内容:
int compare(int u, int v);
题目描述
这是一道交互题。交互库是非自适应(non-adaptive)的。
有一棵 个节点的有根树,节点编号 。根是点 。
点有点权。点 的点权为 。 构成 的排列。
满足两点特殊性质:
- 保证 ;
- 若 是 的父亲,则 。
但是你不知道 具体是多少,只知道树的形态。你可以多次询问:
询问 给定 (,)。
- 若 ,回答为 ;
- 若 ,回答为 。
试利用询问找出点权。
实现细节
你不需要,也不应该实现 main 函数。
你需要在文件头添加以下内容:
int compare(int u, int v);
你可以调用以下的函数:
int compare(int u, int v);
- 参数 满足 ,且 。
- 若 ,返回值为 ;否则返回值为 。
你应当实现以下的函数:
std::vector<int> recover(int n, std::vector<int> U, std::vector<int> V);
recover
函数将被调用多次(多组数据)。
- :树的节点数量。
- :长度为 的数组。, 是 的父亲。
- 返回一个长度为 的排列 ,表示每个点的点权。
输入格式
注意特殊的输入格式。
本题单个测试点内有多组测试数据。
Sample Grader 输入格式如下:
第一行,一个正整数 ,表示数据组数。
接下来描述 组数据。
每组数据第一行,一个正整数 。
每组数据第二行, 个非负整数 。保证 。
每组数据第三行, 个非负整数 。 是一个排列。。
输入的含义为:,点 是点 的父亲。点 的点权为 。
输出格式
Sample Grader 输出格式如下:
对于每组数据,
- 如果调用的
compare(u,v)
不满足 ,则输出一行Wrong Answer [1]
。 - 如果调用的
compare(u,v)
不满足 ,则输出一行Wrong Answer [2]
。 - 如果
recover
函数返回的数组大小不是 ,则输出一行Wrong Answer [3]
。 - 否则,第一行输出
compare
函数的总调用次数 ,格式为C : 4
,然后在下一行按顺序输出recover
函数返回的数组 的元素。
当输出 Wrong Answer
时,Sample Grader 将立刻终止。
注意,Sample Grader 不会验证答案。
答案正确,当且仅当 ,都有 。
提示
计分方式
设有 个对应的排列符合树形态的限制。 显然是正整数。
令 , 为单组数据内调用 compare
函数的次数。
- 当 时,定义 ;
- 当 时,若 ,规定 ;否则规定 。
单组数据的得分率如下所示:
$$\mathrm{rate}= \begin{cases} 0, & K\in (20,+\infty) \\ 0.01(5\cdot \frac{20-K}{12}+5), & K\in (8,20] \\ 0.01(50\cdot \frac{8-K}{5.5}+10), & K\in (2.5,8] \\ 0.01(20\cdot (2.5-K)+60), & K\in (1.5,2.5] \\ 0.01(10\cdot \frac{1.5-K}{0.1}+80), & K\in (1.4,1.5] \\ 1.00, & K\in [0,1.4] \end{cases} $$单组数据得分等于 乘以子任务得分。
单个测试点得分为每组数据得分的最小值,向下取整。
子任务得分为测试点得分最小值。
样例交互
样例交互
,,。树的形态如图所示。
交互库调用
recover(4, [0, 0, 0], [1, 2, 3]);
显然有 个可能的排列 :
$$[0, 1, 2, 3], [0, 1, 3, 2], [0, 2, 1, 3], [0, 2, 3, 1],[0, 3, 1, 2], [0, 3, 2, 1] $$所以,,。
随后进行了四次询问,结果如下:
- 调用
compare(1,2)
,结果为 ,返回值为 。 - 调用
compare(2,3)
,结果为 ,返回值为 。 - 调用
compare(1,3)
,结果为 ,返回值为 。 - 调用
compare(0,3)
,结果为 ,返回值为 。
由询问的信息,可以确定排列 。
此时,,,可以获得该测试点的满分。
数据范围
- ;
- ;;。
- 。
- 若 是 的父亲,则 。
子任务
- :
- 每个点度数至多为 ;点 度数为 。
- :
- 。
- :
- 树的形态是满二叉树(perfect binary tree)。
- :无额外约束。