1 条题解
信息
- ID
- 1665
- 时间
- 5000ms
- 内存
- 1024MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者
从高位到低位贪心构造答案:设已经确定的位为 ans,尝试把当前位也置为 1,得到候选掩码 X。
对每个 Ai,求最小的 Bi≥Ai 且 (Bi&X)=X;若 X 中所有为 1 的位在 Ai 中也为 1,代价为零,否则令 p 为最高的“X 为 1 而 Ai 为 0”的位,保持 Ai 的更高位不变、把第 p 位变成 1,更低位只保留 X 要求的位,这就是最小的 Bi。取 K 个最小的 Bi−Ai,若总和不超过 M,当前位即可保留。高位的价值大于所有低位之和,所以逐位贪心必然得到最大值;每次判定又恰好计算了达到候选掩码的最小总操作数。
共检查 31 位并用线性选择找出最小的 K 个代价,时间复杂度为 O(NlogA),空间复杂度为 O(N)。