CF2150E1.Hidden Single (Version 1)

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

AdhesiveWombat - Overdrive

⠀

这道题有两个版本,分别对 tt、nn 以及最大查询次数有不同的限制,解出一个版本不一定能解出另一个。建议同时阅读两个版本。本题不允许 Hack。

这是一个交互题。

有一个长度为 2n−12n-1 的隐藏数组 a1,a2,…,a2n−1a_1, a_2, \ldots, a_{2n-1},其中包含 11 到 nn 的所有数字,每个数字都恰好出现两次,除了一个只出现一次的数。

你可以进行如下格式的询问,其中 SS 是 {1,2,…,2n−1}\{1, 2, \ldots, 2n-1\} 的一个子集,xx 是 [1,n][1, n] 范围内的整数:

  • $\texttt{ask(S, x)} $:存在 i∈Si \in S 使得 ai=xa_i = x 吗?

请使用不超过 4n+2⌈log⁡2n⌉4n + 2\lceil\log_2 n\rceil 次查询,找出只出现一次的那个数字。你只需输出该数字本身,不需要找出它在数组中的位置。

注意,交互器是非自适应的,即隐藏数组在你的查询过程中保持不变。

输入格式

每个测试点包含多组测试数据。第一行包含测试数据个数 tt(1≤t≤40001 \le t \le 4000)。接下来每组测试数据描述如下。

每组测试数据的第一行包含一个整数 nn(1≤n≤3001 \le n \le 300),即隐藏数组 a1,a2,…,a2n−1a_1, a_2, \ldots, a_{2n-1} 中的最大值。

保证所有测试点中 n2n^2 的总和不超过 4×1054 \times 10^5。

本题共 80 个测试数据(包括样例)。

输出格式

(本题为交互题,具体输出格式请参考题目描述与交互说明。)

输入输出样例

  • 输入#1

    2
    2
    
    0
    
    3
    
    1
    
    1
    
    1
    
    1

    输出#1

    ? 1 2 1 2
    
    ! 1
    
    ? 1 2 1 4
    
    ? 2 2 1 4
    
    ? 2 1 2
    
    ? 1 1 5
    
    ! 3

说明/提示

在第一个测试点中,n=2n=2,隐藏数组长度为 2n−1=32n-1=3。一种符合交互的隐藏数组为 [2,2,1][2, 2, 1],其中 11 只出现一次,22 出现两次。

<> 选手输出 交互器回复 解释
1 ? 1 2 1 2 0 询问:a1=1a_1=1 或 a2=1a_2=1?否(两者均为 22)。因此 11 最多只能出现在位置 33,故只出现一次的数字为 11。
2 ! 1 输出答案。我们询问了 11 次(输出答案不计入查询次数),少于允许的最多查询次数 4n+2⌈log⁡2n⌉=104n + 2\lceil\log_2 n\rceil = 10。

在第二个测试点中,n=3n=3,隐藏数组长度为 55。一种符合交互的隐藏数组为 [1,2,3,2,1][1, 2, 3, 2, 1],其中 33 出现一次,11 和 22 各出现两次。

<> 选手输出 交互器回复 解释
1 ? 1 2 1 4 1 1 检查 a1a_1 或 a4a_4 是否为 11。是(a1=1a_1=1)。
2 ? 2 2 1 4 2 1 检查 a1a_1 或 a4a_4 是否为 22。是(a4=2a_4=2)。
3 ? 2 1 2 1 检查 a2=2a_2=2。是。
4 ? 1 1 5 1 检查 a5=1a_5=1。是。
5 ! 3 可以推断 33 既不出现在 11 和 44(其处有 11 和 22),也不出现在 22 和 55(分别为 22 和 11),所以答案为 33。

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页