CF2219B2.Unique Values (Hard version)
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
简单版与困难版的区别在于允许的查询次数上限不同。本题中最多允许进行 33 次查询。
存在一个隐藏数组 a,长度为 2n+1,其中元素取值为 1 到 n 的整数。每个值恰好出现两次,但有且仅有一个值恰好出现三次。
你的任务是找出这个出现三次的值对应的三个位置。
你可以进行最多 33 次如下形式的查询:
- 选择一个整数 k,以及一个长度为 k 的数组 s,其中包含 1 到 2n+1 之间的互不相同的下标。
- 你会得到一个数值,表示在
as1,as2,…,ask
中,恰好出现一次的不同数值的个数(也就是说,没有重复的数的个数)。
例如,如果
as1,…,ask=2,1,2,3,2,3,6,7,
那么查询结果为 3,因为只有 1,6,7 各出现一次。
数值 3 出现了 2 次,数值 2 出现了 3 次,都不只出现一次,因此不计入答案。
输入格式
每个测试包含多组测试数据。
第一行是测试组数 t(1≤t≤500)。
接下来是每组测试数据:
- 每组第一行包含一个整数 n(2≤n≤1000)。
对于每组测试,隐藏数组 a 是固定的,在交互过程中不会发生改变(即交互器不是自适应的)。
保证所有测试数据中 n 的总和不超过 2×104。
输出格式
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]
- 第一次查询:询问区间 [a1,a2]=[1,1],因为 1 出现了两次,没有只出现一次的数,所以答案为 0。
- 第二次查询:询问 [a1,a4]=[1,2],1 和 2 各出现一次,所以答案为 2。
- 第四次查询:询问
[a1,a2,a3,a4,a5]=[1,1,1,2,2],
所有数都出现多次,因此答案为 0。
最终输出:出现三次的值所在位置为 1,2,3。
部分内容由 GPT-5.3 辅助完成
输入解题思路,AI测评打分。不知道怎么写?