洛谷P4424 [HNOI/AHOI2018]寻宝游戏 题解

一道涉及二进制运算的算法题目,解析了如何通过将运算符转化为二进制来简化问题。关键在于理解不同运算符在特定情况下的性质,并通过比较二进制序列确定结果。通过分析,可以将问题转化为判断二进制序列的大小关系,从而得出答案区间。代码实现中,对输入序列进行排序以优化时间复杂度。
摘要由CSDN通过智能技术生成

题面
不得不说,这真的是一道二进制好题!!!
思路转换得极其精妙,看得我不禁连连叫好!!!
一般看到类似的与二进制运算符有关的题目,按位进行肯定是首要考虑的。
我们考虑在按位进行二进制运算时的性质:
在这里插入图片描述
从上图可以看出,当运算符是 ∣ | 且下一位数字是 1 1 1时,结果一定是 1 1 1;当运算符是&且下一位是 0 0 0时,结果一定是 0 0 0
在这里插入图片描述
从上图可以看出,当运算符是 ∣ | 且下一位是 0 0 0时,值不发生改变;当运算符是&且下一位是 1 1 1时,值不发生改变。
那么,试想,如果我们用 0 0 0 1 1 1分别表示 ∣ | 和&,那么,一个操作序列 o p op op,就可以用二进制表示了。这有什么用呢?
把对应的 o p op op序列与上图的性质进行对比,你会发现,当 o p op op的数与进行操作的数相同时,对结果不造成影响;不同时,会被操作的数覆盖原先值。比如: 00 对 应 ∣ 0 00对应|0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值