1 条题解
-
0
自动搬运
来自洛谷,原作者为

Natsume_Rin
你知道世界的秘密吗?搬运于
2025-08-24 22:34:47,当前版本为作者最后更新于2021-11-28 11:19:54,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
入 OI 以来做的第二道交互题。
题意简述
有 个颜色未知的球,你现在可以通过 次询问,每次询问一个区间 中球的颜色数,需要你确定最后的所有球的颜色异同。
数据范围 ,, 的范围与子任务特性有关。
一般性解法
先可以不考虑子任务,考虑 时怎么做。
首先我们可以从 号球推到 号球,假设当前的颜色已经出现了 个不同的,分别为 ,它们出现的 最靠前的位置 分别为 ,满足 序列升序。
那么假设当前需要求解 号球,那么在 中二分一个 ,可以自行想象一下,如果询问区间 ,得到的结果是 ,如果
- ,那么说明这一个球在颜色 之间,将二分的右端点变为 。
- ,那么说明这一个球在颜色 中 或者是一个新颜色,将二分的左端点变为 。
- 好吧,其实没有第三种情况了。
最后就可以通过二分得到答案。这里举一个 的例子求解 以便大家理解。
- 当前 ,,二分左右端点为 。
- ,,询问 ,,说明这一个颜色是 或者是一个新颜色 。二分左右端点为 。
- ,,询问 ,,说明这一个球就是颜色 。
- 最后更新 ,。
这样需要询问 ,实测可以通过 的子任务。
数据分治
不知道正解是否需要,但是我的需要。颜色段连续,所以对于每一个球 ,只需要询问 即可知道异同关系。询问次数为 。
照常做,用一般性解法,询问次数大约为 。
每次询问区间 ,如果 ,那么就二分,否则就是新颜色,询问次数大约为 。
有点意思。
当颜色数为 时,那么就不可能出现新颜色。一个可能二分的过程是这样的。
- ,。
- ,。
- ,。
你会发现这样子每一个球会询问 次,总询问次数约为 无法通过。
怎么优化呢?
突破口就在于 不可能出现新颜色,所以当二分区间 满足 且颜色数为 时,那么 ,因为 只有这一种颜色可选,又不可能出现新颜色。这样就可以将询问次数降到 级别,可以通过。
放在最后
很好的一道题。
我才不会告诉你我做了很久。代码就不放了(太丑了)。完结撒花。
- 1
信息
- ID
- 7313
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者