交互题
信息量
考虑在交互过程中获取的信息量,如果信息量小于状态量,那么必然无法确定唯一的状态,此时可以尝试增加信息量或考虑能否在不确定明确的状态的前提下完成要求。
归纳确定
类似于数学归纳法,分两类:
- 化归确定:设法确定一些信息,从而化归为更小规模的问题。
范例:要求给一个排列排序,进行的操作为:1.交换两项 2.查询前缀最大值个数。
解法:每次选择 \(\frac{n}{2}\) 个元素,解决这个子问题。然后将这些元素放置到 \(2, 3, \dots \frac{n}{2}+1\) 的位置,把后面的元素一个个放到第一个位置并查询,从而确定每一个元素在那 \(\frac{n}{2}\) 个元素 中的排名,从而化归为 \(\frac{n}{2}+1\) 个子问题。 - 增量确定:确定了一个/若干个更小的子问题后,扩展确定更大规模的问题。
范例:存在一个排列,你可以多次查询一个区间的值域连续段个数,要求还原排列。(次数限制 \(n\log n\))
解法:在确定了前 \(i\) 个数两两之间是否相邻的关系后,容易通过一倍常数的二分确定 \(i\) 和前面哪一/两个数相邻,从而实现增量。
优化技巧:利用已有信息
优化掉利用以前的信息就能预测出回答的,或者这个回答能够被别的回答代替的问询。
构造非平凡回答
有一些交互题,随机做出询问时大概率只能得到平凡的回答(如每次询问有多少个数满足条件,绝大部分问询对应的回答都是平凡的 \(0\)),那么考虑设法让交互库给你不平凡的回答。
这方面的一个例子:[APIO2025] Hack!
操作特化
将具有普遍性,却同时也很宽泛的操作特化为一些特殊的,却有着明确用途的操作。
复合查询
有时候一套查询方案能够以一定的代价确定一定的信息,复合使用几套不同类型查询方案,得到的信息综合起来确定答案。(这意味着,如果想到了一套查询方案能得到部分分,但难以继续优化,考虑结合上其他的查询方案)

浙公网安备 33010602011771号