热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HDU5969最大的位或【贪心】

SampleInput5110011023102423332210000000000000000001000000000000000000SampleOutput15120475

Sample Input              

51 100 11023 1024233 3221000000000000000000 1000000000000000000

Sample Output

15120475111000000000000000000

原题链接

解题思路:

        先将数字转换成二进制存储,这时分情况讨论

              1,如果两个字符串长度相同时,从高位忘低位遍历,直到遇到不一样的(r=1&&l==0,这个条件也是限制了r>l的这个条件)停止 ,把r之后的位数全变成1

             2,如果俩个字符串长度不相同时,r的长度肯定大于l,将r与l相对的位置全部变为1,(r的长度大,r一定是大于L,在这种情况下,让1的个数越多最后结果越大)        

#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
const int N =1010;
int a[N],b[N],c[N];
int main(){ll y,x;ll t;cin>>t;while (t--) {memset(a,0,sizeof(a));memset(b,0,sizeof(b));cin>>x>>y;int lenx=0;int leny=0;while(x){if(x&1){a[lenx++]=1;}else a[lenx++]=0;x=x>>1;}while(y){if(y&1){b[leny++]=1;}else b[leny++]=0;y=y>>1;}if(lenx=0;i--){if(i=0;i--)c[i]=1;}ll ans=0;ll p=1;for(int i=0;i}

 


推荐阅读
author-avatar
baaiiii
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有