贪心

想了一会觉得没什么很好的方法,看了题解

我们枚举每个二进制位,对于l,r如果这位相同就异或到答案里,否则停止,这里肯定是r比l大,也就是r这位是1而l是0,那么我们就让r这位选1,l选0,然后把l从这位-1直到0每位全部赋成1,这样就是答案

为什么是对的呢?考虑如果这位不同,那么之前的位全部都是相同的,又因为l<=r,所以肯定这位l是0,r是1,所以我们把r后面所有位改成0也是符合的,假设现在的r=x,因为这样x的肯定是<=r,并且因为l这位是0,而之前所有位相等,所以x肯定>l,那么也就是说选的x是符合的,那么另外的一个y呢?y之前所有位和x是相同的,但是这位是0,有因为r这位是1,那么我们把后面所有位赋成1还是<r的,有因为之前所有位和l是一样的,把后面赋成1肯定是>=l的。

然后考虑如果这位相同,为什么我们不能改掉两个数中某一个的这位呢?如果这两位l和r都是0,那么我们把一个数这位赋成1,因为之前相同,那么现在这个数就>r了,不满足,如果两位都是1,因为之前所有位和l相同,那么改成0后就<l,也不满足。

感觉这道题挺巧妙的,只用不到十行就解决了问题,然而想法还是比较巧妙。看来异或问题不仅可以用trie,线性基取最大值,有时得仔细结合题目分析就能得出简单的结论。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll l, r, ans;
int main()
{
cin >> l >> r;
for(int i = ; i >= ; --i)
{
ans ^= (l & (1ll << i)) ^ (r & (1ll << i));
if((l & (1ll << i)) != (r & (1ll << i)))
{
for(int j = i - ; j >= ; --j) ans ^= (1ll << j);
break;
}
}
cout << ans;
return ;
}

276D的更多相关文章

  1. Codeforces 276D Little Girl and Maximum XOR

    题意:给范围l,r选两个数亦或最大是多少. 思路:找到第一个l和r二进制下不相同的位置i,然后答案就是2^(i+1)-1,因为一个取0一个取1之后,后面的位置全部选1和全部选0,就是这样:011111 ...

  2. CodeForces 276D – Little Girl and Maximum XOR 贪心

    整整10个月后第二次搞这个问题才搞懂........第一次还是太随意了. 解题思路: 经过打表可得规律答案要么是0 要么是2的N次 - 1 要得到最大的XOR值,其值一定是2的N次 - 1 即在 l ...

  3. Codeforces 276D

    题目链接 这题真的体现了自己思维的不足,考虑问题只是考虑他的特殊性,却不能总结出它的一般性规律. 对于这题, 如果L == R , 那么结果为0. 否则, 我们只需要找到最高的某一位 (二进制数中的某 ...

  4. BOOST.Asio——Tutorial

    =================================版权声明================================= 版权声明:原创文章 谢绝转载  啥说的,鄙视那些无视版权随 ...

  5. Smart210学习记录------块设备

    转自:http://bbs.chinaunix.net/thread-2017377-1-1.html 本章的目的用尽可能最简单的方法写出一个能用的块设备驱动.所谓的能用,是指我们可以对这个驱动生成的 ...

  6. java基础学习总结——异常处理

    一.异常的概念 异常指的是运行期出现的错误,也就是当程序开始执行以后执行期出现的错误.出现错误时观察错误的名字和行号最为重要.

  7. java基础—异常处理

    一.异常的概念 异常指的是运行期出现的错误,也就是当程序开始执行以后执行期出现的错误.出现错误时观察错误的名字和行号最为重要.

  8. CSS中content属性的妙用

    前言 本文讲解CSS中使用频率并不高的content属性,通过多个实用的案例,带你由浅入深的掌握content的用法,让代码变得更加简洁.高效. 定义 W3school中这样定义: content 属 ...

随机推荐

  1. poj1975

    #include<stdio.h> #include<string.h> #define N 100 int map[N][N]; int main() { int t,n,m ...

  2. CPU问题定位与解决

    CPU问题定位基本流程:   性能计数器诊断 主要用到的性能计数器 %Process Time 全实例 (主要用于查看当前服务器的CPU 情况) %Process Time sqlservr (主要用 ...

  3. 《TCP/IP详解卷1:协议》——第3章 IP:网际协议(转载)

    1.引言 IP是TCP/IP协议族中最核心的协议.所有的TCP.UDP.ICMP及IGMP数据都以IP数据报格式传输.IP提供不可靠. 无连接的数据报传送服务. (1)不可靠 它不能保证IP数据报能成 ...

  4. Free Web Application Firewall相关资料

    http://www.freewaf.org/solution/#1 http://baike.soso.com/v60659982.htm

  5. C. Day at the Beach---cf559

    http://codeforces.com/problemset/problem/599/C 题目大意: 有n个城堡的高度   让你最多分成几个块   每个块排过序之后 整体是按照升序来的 分析:   ...

  6. Intersection--poj1410(判断线段与矩形的关系)

    http://poj.org/problem?id=1410 题目大意:给你一个线段和矩形的对角两点  如果相交就输出'T'  不想交就是'F' 注意: 1,给的矩形有可能不是左上 右下  所以要先判 ...

  7. P1918 保龄球 洛谷

    https://www.luogu.org/problem/show?pid=1918 题目描述 DL 算缘分算得很烦闷,所以常常到体育馆去打保龄球解闷.因为他保龄球已经打了几十年了,所以技术上不成问 ...

  8. springboot整合mybatis,freemarker

    springboot 整合mybaits,,freemarker pom.xml文件 <?xml version="1.0" encoding="UTF-8&quo ...

  9. 异常处理(try catch throw)详解(C++)

    选择异常处理的编程方法的具体原因如下: 1.把错误处理和真正的工作分开来: 2.代码更易组织,更清晰,复杂的工作任务更容易实现: 3.毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了: 4 ...

  10. HTML的简单学习

    <html>与</html>之间的部分用来描述网页. <body>与</body>之间是页面的可见的内容. <h1>与</h1> ...