Friendly Arrays题解
2023-09-18
题目
难度&重要性(1~10):5
题目来源
luogu
题目算法
贪心
解题思路
一道大水题。
这道题解法非常的套路,我们需要对于处理按位或和按位异或时,首先就要把数拆成二进制的形式去考虑。
首先我们需要简单了解一下按位或和按位异或的运算规则:
-
按位或,对于两个数每一位,只要有一个是
结果就是 ,只有当两个都是 是结果才为 。 -
按位异或,对于两个数每一位,如果两位相同即为
,两位不同即为 。
知道这些已经可以做这道题了,我们就可以考虑贪心了。
我们的贪心要做一个小小的分讨:
-
当
时,每对 做一次处理, 中为 的位在 之中就都为 了。而由于 的个数是偶数个,异或结果就只能为 ,这很明显答案单调不增。所以最大答案就是不进行任何的操作,而最小答案则是对每一个 都进行一次操作,这样 中含 的位数在答案中就都是 。 -
当
时,而由于 的个数是奇数个,异或结果就为 ,这很则是答案单调不减。所以最小答案不进行任何的操作,最大答案就每一个 都进行一次操作,这样 中含 的位数在答案中就都是 了。
这样我们就解决了这道题,具体细节请看代码。
完成状态
已完成
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下