#P12447. [COTS 2025] 砍树 / Stablo
[COTS 2025] 砍树 / Stablo
题目描述
这是一道交互题。本题中,交互库是非自适应的。
有一棵 个节点的树。这棵树中,每个节点度数至多为 。
你可以提问至多 次。每次给定三个两两不同的节点 ,交互库会回答:
- ,如果 ;
- ,如果 $\operatorname{dist}(a,b)\lt\operatorname{dist}(a,c)$;
- ,如果 $\operatorname{dist}(a,b)\gt\operatorname{dist}(a,c)$。
定义 表示 最短路上边的数量。
试通过询问还原这棵树。
虽然你可以提问 次,但是想要获得更高的分数,需要更少的询问次数。见「计分方式」。
实现细节
首先读入正整数 。读入后发起询问:
- :发起一次询问。
- 你需要保证 且 ,,。
- 最多可以询问 次。
- 从标准输入流读入一个整数表示答案,具体见「题目描述」。
- :报告答案。
- 输出 后,接下来再输出 行,每行两个正整数,描述一条树边。
- 你可以以任意顺序输出这 条边。
- 报告答案后,你的程序必须终止运行。
每次提问后,都需要换行并刷新缓冲区。
交互库是非自适应的。也就是说,树的形态在交互开始前已经固定。
输入格式
见「实现细节」。
输出格式
见「实现细节」。
4
1
2
0
? 1 2 3
? 1 4 3
? 2 1 3
!
1 2
2 3
3 4
提示
样例解释
样例中,树边有 。
数据范围
- ;
- 每个节点度数至多为 。
子任务
- :样例。
- :每个节点度数至多为 。
- :树是满二叉树。
- 换句话说,树是完全二叉树,且存在正整数 使得 。
- :无额外限制。
计分方式
答案错误,询问次数超限,或者出现了任何未能成功运行结束的情况,得 分。
假设你在某个分值为 的子任务中至多用了 次查询,则子任务得分为
$$\min\left(1, \left(\frac{14000}{K}\right)^{0.7}\right) \cdot B $$交互库是非自适应的。也就是说,树的形态在交互开始前已经固定。