CF2219B2.Unique Values (Hard version)

普及+/提高

通过率:0%

AC君温馨提醒

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

题目描述

简单版与困难版的区别在于允许的查询次数上限不同。本题中最多允许进行 3333 次查询。

存在一个隐藏数组 aa,长度为 2n+12n+1,其中元素取值为 11 到 nn 的整数。每个值恰好出现两次,但有且仅有一个值恰好出现三次。

你的任务是找出这个出现三次的值对应的三个位置。

你可以进行最多 3333 次如下形式的查询:

  1. 选择一个整数 kk,以及一个长度为 kk 的数组 ss,其中包含 11 到 2n+12n+1 之间的互不相同的下标。
  2. 你会得到一个数值,表示在
    as1,as2,…,aska_{s_1}, a_{s_2}, \ldots, a_{s_k}
    中,恰好出现一次的不同数值的个数(也就是说,没有重复的数的个数)。

例如,如果
as1,…,ask=2,1,2,3,2,3,6,7a_{s_1}, \ldots, a_{s_k} = {2, 1, 2, 3, 2, 3, 6, 7},
那么查询结果为 33,因为只有 1,6,71, 6, 7 各出现一次。
数值 33 出现了 22 次,数值 22 出现了 33 次,都不只出现一次,因此不计入答案。

输入格式

每个测试包含多组测试数据。

第一行是测试组数 tt(1≤t≤5001 \le t \le 500)。

接下来是每组测试数据:

  • 每组第一行包含一个整数 nn(2≤n≤10002 \le n \le 1000)。

对于每组测试,隐藏数组 aa 是固定的,在交互过程中不会发生改变(即交互器不是自适应的)。

保证所有测试数据中 nn 的总和不超过 2×1042 \times 10^4。

输出格式

null

输入输出样例

  • 输入#1

    1
    2
    
    0
    
    2
    
    2
    
    0
    
    1

    输出#1

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

说明/提示

隐藏数组为:
a=[1,1,1,2,2]a = [1, 1, 1, 2, 2]

  • 第一次查询:询问区间 [a1,a2]=[1,1][a_1, a_2] = [1, 1],因为 11 出现了两次,没有只出现一次的数,所以答案为 00。
  • 第二次查询:询问 [a1,a4]=[1,2][a_1, a_4] = [1, 2],11 和 22 各出现一次,所以答案为 22。
  • 第四次查询:询问
    [a1,a2,a3,a4,a5]=[1,1,1,2,2][a_1, a_2, a_3, a_4, a_5] = [1, 1, 1, 2, 2],
    所有数都出现多次,因此答案为 00。

最终输出:出现三次的值所在位置为 1,2,31, 2, 3。

部分内容由 GPT-5.3 辅助完成

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

首页