HDU 5969 最大的位或 (思维,贪心)

Posted rui-4825

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 5969 最大的位或 (思维,贪心)相关的知识,希望对你有一定的参考价值。

HDU 5969 最大的位或

题目大意

B君和G君聊天的时候想到了如下的问题。
给定自然数(l)(r) ,选取(2)个整数(x,y)满足(l <= x <= y <= r),使得(x|y)最大。
(0 <= l <= r <= 10181018)

solution

你看那数据范围,是不是像极了(TLE)
又是玄学贪心
异或最大,那么就尽可能让每一位上都是1,按照这个策略贪心即可,注意long long

#include<cstdio>
using namespace std;
typedef long long ll;
int main(){
    ll aa,bb,t;
    scanf("%lld",&t);
    while(t--){
        scanf("%lld%lld",&aa,&bb);
        ll now=0;
        while((aa|((long long)1<<now))<bb) aa|=((long long)1<<now),now++;
        printf("%lld
",aa|bb);
    }
    return 0;
}




以上是关于HDU 5969 最大的位或 (思维,贪心)的主要内容,如果未能解决你的问题,请参考以下文章

随手练——HDU-5969 最大的位或 (贪心)

HDU 5969 最大的位或 贪心 (中国大学生程序设计竞赛(合肥))

hdu 5969 最大的位或

最大的位或 HDU - 5969

[HDU5969] 最大的位或

中国大学生程序设计竞赛(合肥)-重现赛1009 HDU 5969