DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 认证的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

귀가 장치

返回题目

题解

bitwise OR 연산은 한 번 1이 된 비트를 다시 0으로 만들 수 없다. 따라서 AAA에서 이미 1인 비트는 BBB에서도 반드시 1이어야 한다. 즉, (A∣B)=B(A \mid B)=B(A∣B)=B가 필요하다.

또한 어떤 버튼 iii를 눌렀을 때 aia_iai​에 BBB에 없는 비트가 포함되어 있으면, 그 비트가 켜져서 최종적으로 BBB가 될 수 없다. 따라서 사용할 수 있는 버튼은 (ai∣B)=B(a_i \mid B)=B(ai​∣B)=B를 만족하는 버튼뿐이다.

이제 BBB에는 1이지만 AAA에는 0인 각 비트를 켜야 한다. 각 비트에 대해, 그 비트를 포함하면서 (ai∣B)=B(a_i \mid B)=B(ai​∣B)=B를 만족하는 버튼이 하나라도 있으면 그 버튼을 누르면 된다.

정수의 범위가 10910^9109 이하이므로 확인해야 할 비트는 30개 정도뿐이다. 각 버튼을 보면서 각 비트를 켤 수 있는 버튼 하나를 저장하면 O(nlog⁡109)O(n \log 10^9)O(nlog109)에 해결할 수 있다.

선택한 버튼 수는 필요한 비트 수 이하이므로 최대 30개이고, 따라서 100번 제한을 항상 만족한다.