HN 省队集训 DAY1
array
difference
给定一个数组,数组中的元素都为正整数,下标从 0 开始编号,它们 互不相同 ,可以执行两种操作来确定数列 \(a\) 中的元素
- 给定一个位置,交互器返回这个位置的值(最多执行 2 次)
- 给定一个集合 \(S\) ,交互器会以任意顺序返回集合内元素两两之差的绝对值 (最多执行 30 次)
- \(n\leq 250\)
首先通过一次全局询问出最大值和最小值的极值,然后通过二分前缀来确定这两个位置
然后查询这两个位置的值,找到最小值
然后如果能求出所有其他位置和最小值的差,那么自然就可以求出其他位置的值
对于一个集合 \(S\) 和一个位置 \(pos\) ,询问 \(S\) 和 \(S\cap pos\) 就可以得到集合 \(S\) 到 \(pos\) 的差值
考虑对于每一组询问 \(S_j\) 询问在二进制下第 \(j\) 位为 1 的编号
注意到这些值 互不相同 ,所以找到对于的组找到同时出现的数据就可以了
randomxor