1 条题解
-
0
题解
思路推导
设最终按位或得到的值为 。若某个 能选择一个 ,使得 的所有置位都已经包含在 中,那么这一项不会让最终结果出现 之外的新置位。反之,只要存在一个 对所有 都不满足这个条件, 就不可能是合法上界。
所有输入均小于 ,所以答案也一定在 到 之间。按数值从小到大枚举 ,逐个检查每个 是否存在可用的 。第一个通过检查的 就是最小答案。
做法
依次枚举 。对每个 扫描整个 序列;若找不到满足 的元素,就否定当前候选。所有位置都能找到候选时立即输出 。
正确性证明
对于固定的 ,若每个 都存在一个 满足 ,分别选择这些 后,每个 的置位都是 的子集,因此所有 的按位或也是 的子集,所得值不超过 。
若检查失败,则存在某个 ,无论选择哪个 , 都含有 中不存在的置位。因此任何选择得到的最终按位或都不可能是 的子集,特别地不可能不超过 且等于某个已枚举候选。
枚举按数值递增进行,所以第一个通过检查的候选既可实现,又不存在更小的可实现值,因而就是最优答案。
复杂度分析
最多检查 个候选,每个候选检查 对元素,时间复杂度为 ,额外空间复杂度为 。
- 1
信息
- ID
- 1098
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者