CF2156D.Find the Last Number
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
这是一个交互题。
有一个长度为 n 的隐藏排列 p。你可以通过以下方式与它进行最多 2n 次的交互:
- 选择两个整数 i 和 x,其中 1≤i≤n−1 且 1≤x≤109。裁判会返回 0 ,如果 pi&x 等于 0;否则返回 1。
重要提示:你不能对最后一个元素 pn 进行提问(因为 i≤n−1)。
你的目标是在最多 2n 次查询内确定排列的最后一个元素 pn 的值。
注意,交互器是非自适应的。这意味着隐藏排列 p 在开始时就已经固定,并不会因为你的查询而改变。
一个长度为 n 的排列是由 n 个 1 到 n 的不同整数组成的数组,排列顺序任意。例如,[2,3,1,5,4] 是一个排列,但 [1,2,2] 不是排列(2 出现了两次),[1,3,4] 也不是排列(n=3 但其中有 4)。
& 表示按位与运算。
输入格式
每个测试点包含多组测试数据。第一行包含一个整数 t (1≤t≤103),表示测试数据组数。
每组测试数据的第一行包含一个整数 n(2≤n≤2⋅104),表示排列 p 的长度。
对于每一组测试数据,在读入 n 后,你应开始与交互器交互,并在继续下一组测试数据前输出答案。
保证所有测试数据中 n 的总和不超过 2⋅104。
输出格式
(本题为交互题,具体格式请结合题目内容。)
输入输出样例
输入#1
2 2 0 1 3 1 0 1
输出#1
? 1 1 ? 1 2 ! 1 ? 1 3 ? 1 2 ? 2 3 ! 2
说明/提示
在第一个测试中,交互过程如下。
SolutionJuryExplanation
2 表示有 2 组测试数据。
2 第一组测试数据中,隐藏排列为 [2,1](长度为 2)。
? 1 1 0
选手询问 p1&1。由于 p1=2 且 2&1=0,因此裁判返回 0。
? 1 2 1
选手询问 p1&2。由于 p1=2 且 2&2=2,因此裁判返回 1。
! 1
选手确定最后一个元素为 1,因为通过前面的查询已知第一个元素不是 1。
3 第二组测试数据,隐藏排列为 [1,3,2](长度为 3)。
? 1 3 1
选手询问 p1&3。由于 p1=1 且 1&3=1,因此裁判返回 1。
? 1 2 0
选手询问 p1&2。由于 p1=1 且 1&2=0,因此裁判返回 0。
? 2 3 1
选手询问 p2&3。由于 p2=3 且 3&3=3,因此裁判返回 1。
! 2
选手确定最后一个元素为 2。
请注意,示例输入输出中的空行仅为便于阅读,实际交互时不会出现。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?