交互题
先随机 \(1000\) 次找到 \(\le x\) 的最大值。
然后不断跳就可以了。
期望跳 \(50\) 次就可以了,所以算法较为优秀。
Subtask 1:
每次询问 \([1+i,n-i+1]\),询问 \(\left \lceil \dfrac{n}{2} \right \rceil\) 次就可以得到 \(a\) 数组。
Subtask 2:
先求出 \(a_1,a_n\)。
发现答案的最小值为 \(\dfrac{a_n-a_1}{n-1}\)。
所以按这个大小分块,块内没有答案,对 \(\min - \operatorname{premax}\) 取答案即可。
这样的 \(M=(n+1)+(n-1)+(n-2)=3n-2\) 合法。
Sub1:\(n=3\)。
按照样例模拟即可。
Sub2:查询次数很多。
暴力修改每一个 \(<n-1\) 的点,查看每个点相较于之前的状态是否有改变。
Sub3:每个点度数为 \(1\)。
二进制分组。
记 \(i\) 和 \(p_i\) 互相连边。
如果 \(i\) 的二进制 \(j\) 位为 \(1\),则我们修改 \(i\)。
- 如果一个的二进制位为 \(1\) 并且查询结果和之前相同(自己操作了一遍),则 \(p_i\) 的二进制下 \(j\) 为也为 \(1\)。
- 如果一个的二进制位为 \(0\) 并且查询结果和之前不同,则 \(p_i\) 的二进制下 \(j\) 为 \(1\)。
剩下的不会做。