Claris loves bitwise operations very much, especially XOR, because it has many beautiful features. He gets four positive integers a,b,c,da,b,c,d that satisfies a≤ba≤b and c≤dc≤d. He wants to choose two integers x,yx,y that satisfies a≤x≤ba≤x≤b and c≤y≤dc≤y≤d, and maximize the value of x XOR yx XOR y. But he doesn't know how to do it, so please tell him the maximum value of x XOR yx XOR y. 


Input

The first line contains an integer T(1≤T≤10,000)T(1≤T≤10,000)——The number of the test cases. 
For each test case, the only line contains four integers a,b,c,d(1≤a,b,c,d≤10^18)a,b,c,d(1≤a,b,c,d≤10^18). Between each two adjacent integers there is a white space separated. 
Output

For each test case, the only line contains a integer that is the maximum value of x XOR yx XOR y. 
Sample Input

2
1 2 3 4
5 7 13 15

Sample Output

6
11

题意:现在对对于这个题,求a<=X<=b,c<=Y<=d,使XxorY最大(不同位数最多)。

我们求二进制是怎么求的呢:先看看二进制的每一位代表多大:.......32 16 8 4 2 1

假如n=10

.....

32>n ,不要。

16>n,不要。

8<=n,要,然后n=n-8=2。

4>2,不要。

2<=2,要,n=n-2=0;

0>1,不要。

不要是一位是0,要的一位是1,则10(10)=..001010(2),也就是从高位向低位求,能取则取

题意:现在对对于这个题,求a<=x<=b,c<=y<=d,使x^y最大(不同位数最多)。

我们来试一试搜索:数量级差不多再1<<60左右,我们设62位为最高位。

对于x,第i位有0或1的选择。对于y,第i位也有0或1的选择,则搜索的数量级位(2^120),爆炸。但是由于取1可能会有x>b,取0会有x<a,取什么对x是有限定的,即是搜索的减枝,这使得数量级不会太大。所以我们开始搜索,当然,搜索的方向是对于第i位,二者尽量取不同,即在满足[a,b],[c,d]的范围内一个取0,一个取1。如果不行,则二者同取1或取0(效果一样,就当a,b,c,d同时减去0或者同时减去1<<i)。————>然后发现这个搜索不需要回溯,根本就是个贪心。

如何给予限定:假设x在第i+1位取得t1,在第i位,如果t1+(1LL<<i)>b则不能取1,如果t1+(1LL<<i)-1<a,则不能取0。(iLL<<i)-1表示第i位不取,1-(i-1)都取。

细节:int  1<<i ; long long  1LL<<i

HDU5661
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cmath>
using namespace std;
long long a,b,c,d,x,y,t1,t2,ans;
int main()
{
long long i,j,T;
scanf("%lld",&T);
while(T--){
ans=x=y=;
scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
for(i=;i>=;i--){
t1=x+(1LL<<i);t2=y+(1LL<<i);
if(t1<=b&&t2->=c) {
x=t1;ans+=(1LL<<i);
}
else if(t2<=d&&t1->=a){
y=t2;ans+=(1LL<<i);
}
else if(t1->=a&&t2->=c){
continue;
}
else if(t1<=b&&t2<=d){
x=t1;y=t2;
}
}
printf("%lld\n",ans);
}
return ;
}

HDU5661 Claris and XOR的更多相关文章

  1. BC之Claris and XOR

    http://acm.hdu.edu.cn/showproblem.php?pid=5661 Claris and XOR Time Limit: 2000/1000 MS (Java/Others) ...

  2. hdu 5661 Claris and XOR

    Claris and XOR Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  3. Claris and XOR(模拟)

    Claris and XOR Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  4. Claris and XOR

    Problem Description Claris loves bitwise operations very much, especially XOR, because it has many b ...

  5. HDU 5661 Claris and XOR 贪心

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5661 bc(中文):http://bestcoder.hdu.edu.cn/contests ...

  6. 【整理】XOR:从陌生到头晕

    一:解决XOR常用的方法: 在vjudge上面输入关键词xor,然后按照顺序刷了一些题. 然后大概悟出了一些的的套路: 常用的有贪心,主要是利用二进制的一些性质,即贪心最大值的尽量高位取1. 然后有前 ...

  7. bzoj4589 FWT xor版本

    4589: Hard Nim Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 865  Solved: 484[Submit][Status][Disc ...

  8. [LeetCode] Maximum XOR of Two Numbers in an Array 数组中异或值最大的两个数字

    Given a non-empty array of numbers, a0, a1, a2, … , an-1, where 0 ≤ ai < 231. Find the maximum re ...

  9. 二分+DP+Trie HDOJ 5715 XOR 游戏

    题目链接 XOR 游戏 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

随机推荐

  1. React——组件

    一.创建组件 在React中有两种创建组件的方式,分别是函数形式的组件和类形式的组件 //函数形式: function Welcome(props){ return <p>this is ...

  2. [转载]历上最强的音乐播放器(jetAudio-8.0.5.320-Plus-VX

    原文地址:历上最强的音乐播放器(jetAudio-8.0.5.320-Plus-VX-完全汉化版)下载作者:盖世天星 历上最强的音乐播放器(jetAudio-8.0.5.320-Plus-VX-完全汉 ...

  3. 201521123035《Java程序设计》第五周学习总结

    1. 本章学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 接口是一种特殊的抽象类,是对行为的抽象,它不能使用new进行实例化,接口中可以包 ...

  4. 201521123039 《java程序设计》第十一周学习总结

    1. 本周学习总结 2. 书面作业 本次PTA作业题集多线程 互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synchronized修饰方法实现互斥同步访问,还有 ...

  5. 201521123032 《Java程序设计》第9周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己 ...

  6. 201521123019 《java程序设计》 第14周学习总结

    1. 本章学习总结 2. 书面作业 Q1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己的学号.姓名) 在自己建立的数据库上执行常见SQL语句(截图) ...

  7. 201521123032 《Java程序设计》第3周学习总结(编辑器修改后)

    本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 书面作业 代码阅读 ...

  8. JQUERY选中问题

    单选,复选,下拉列表的全选选中问题 基本思路就是找到元素,操作元素,关于怎么找看jquery简介,主要学习记住具体操作用到的方法   复选框的全选以及设置选中问题:   jquery中提供prop方法 ...

  9. lintcode 453 将二叉树拆成链表

    将二叉树拆成链表   描述 笔记 数据 评测 将一棵二叉树按照前序遍历拆解成为一个假链表.所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针. 注意事项 不要忘记将左儿子标 ...

  10. 框架应用:Mybatis (三) - 关系映射

    你有一张你自己的学生证?(一对一) 你这一年级有多少个学生?(一对多) 班上学生各选了什么课?(多对多) 两张表以上的操作都需要联立多张表,而用SQL语句可以直接联立两张表,用工程语言则需要手动完成这 ...