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. log4j与log4j.properties的配置

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt233 摘要: 一.配置步骤 1.  在应用程序中使用log4j 2.  把l ...

  2. Java学习记录:降低耦合度

    耦合度定义 耦合度(Coupling)是对模块间关联程度的度量.耦合的强弱取决与模块间接口的复杂性.调用模块的方式以及通过界面传送数据的多少. 模块间的耦合度是指模块之间的依赖关系,包括控制关系.调用 ...

  3. 201521123061 《Java程序设计》第十三周学习总结

    201521123061 <Java程序设计>第十三周学习总结 1. 本周学习总结 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jm ...

  4. 201521123064 《Java程序设计》第8周学习总结

    1. 本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 集合内容见:<Java程序设计>第7周学习总结 1.2 选做:收集你认为有用的代码片段 ① Jav ...

  5. 201521123038 《Java程序设计》 第七周学习总结

    201521123038 <Java程序设计> 第七周学习总结 1. 本周学习总结 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 ...

  6. 201521123095 《Java程序设计》第7周学习总结

    1. 本章学习总结 **2. 书面作业* 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 该源代码验证该ArrayList中是否包含某个对象,contains的 ...

  7. 201521123049 《JAVA程序设计》 第5周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 作业参考文件下载 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java ...

  8. 201521123030《Java程序设计》第5周学习总结

    1. 本周学习总结 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 因为i在类中是priv ...

  9. 201521123053 <<Java基本语法与类库>>第二周

    1.本周学习总结 这是第二周学习了,还是感觉吃力,慢慢来吧 .知识总是一点一点进到脑子里,虽然头小,但总会进来不是! 知识储备:   A.整形变量按照长度分为byte.short.int.long. ...

  10. 201521123071 《JAVA程序设计》第九周学习总结

    第九周-异常 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 此处仅部分知识点归纳 2. 书面作业 1. 常用异常,题目5-1 1.1 截图你的提交结果(出现学号) ...