UVA10718 - Bit Mask
摘要:
看到这个题我们简单的思路就是从L到R逐个数的暴力,但是人家有明显提示了,所以我们要另寻妙法了要求从某个范围里找到M,使得M|N最大,如果有多个M满足最大的话就输出最小的,考虑第一个条件,找到M使得M|N最大,那么我们应该从二进制方向出发,使得M|N最大,则我们从最高位到最低位比较,如果N对应的数是0的话,在其他条件合适的话肯定让M对应的该位数为1。如果N对应的数是1的话,则此时我们为了满足第二个条件,应当使得M的该数位上的数为0,但是我们还要考虑范围因素,每次都得判断M|N是否在范围内,如果超过了,则就舍弃该数位等于1的机会,如果还不足L,则及时加上,即让该数位等与1#include int. 阅读全文
浙公网安备 33010602011771号