【贪心】hdu5969 最大的位或】的更多相关文章

HDU-5969:http://acm.hdu.edu.cn/showproblem.php?pid=5969 一开始也是分了类,觉得要两种情况,l 与 r 位数相同与不同的情况,仔细想一下,可以一起处理,从最高位(左侧符号位)开始,遇到不同后面全部补1即可. 刚写好交信心满满,一交就Wrong answer,写了一个暴力求 的对数器,确定算法是对的,也知道了问题在哪. 第一,数据相同时,没有结果,要处理. 第二,碰到不同后,将 r 后面的全部置1: r = r | (t << s); 一开始…
对于右端点r和左端点l,考虑他们的二进制位从高到低,直到第一位不同的为止. 更高的都取成相同的,更低的都取成1. 比如 101011110001 101011101001 101011111111 #include<cstdio> using namespace std; typedef long long ll; int T; ll l,r; int main(){ scanf("%d",&T); for(;T;--T){ scanf("%I64d%I6…
题目类型:位运算 传送门:>Here< 题意:给出\(l\)和\(r\),求最大的\(x|y\),其中\(x,y\)在\([l,r]\)范围内 解题思路 首先让我想到了前面那题\(Bits\),然而并不是1越多越好,而是越前面越好(于是就\(WA\)了--) 其实很简单.分类讨论: 如果左右边界转为二进制后长度不等,那么左边界一定能够做到全为1,且长度为右边界-1.再或以下就又变长了一格了.于是答案很明显是\(2^{len(r)}-1\) 如果长度相等,我们发现他们肯定有公共前缀.而从高到低第…
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5969 题意:给定自然数l和r ,选取2个整数x,y,满足l <= x <= y <= r,使得x|y最大. 分析:先把l和r转换成二进制位,举个栗子: (假设LR最高位不是同一位): x.y可以取二进制的11111(一定在L和R范围内的一个数)和100101(R),所以结果是11111或上100101即111111(63) (如果LR最高位相同): 那就L和R都减去8,转换成L=01,R=001…
最大的位或 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem Description B君和G君聊天的时候想到了如下的问题.给定自然数l和r ,选取2个整数x,y满足l <= x <= y <= r ,使得x|y最大.其中|表示按位或,即C. C++. Java中的|运算.   Input 包含至多10001组测试数据.第一行有一个正整数,表示数据的组数.…
题目链接:hdu_5969_最大的位或 题意: 中文,还是自己看 题解: xjb贪心一下就行了 #include<bits/stdc++.h> #define F(i,a,b) for(int i=a;i<=b;i++) using namespace std; typedef unsigned long long ll; int t; ll a,b; ],ditb[],eda,edb; int main() { scanf("%d",&t); while(t…
Problem Description B君和G君聊天的时候想到了如下的问题.给定自然数l和r ,选取2个整数x,y满足l <= x <= y <= r ,使得x|y最大.其中|表示按位或,即C. C++. Java中的|运算.   Input 包含至多10001组测试数据.第一行有一个正整数,表示数据的组数.接下来每一行表示一组数据,包含两个整数l,r.保证 0 <= l <= r <= 1018.   Output 对于每组数据输出一行,表示最大的位或. 题目是中文…
题目 B君和G君聊天的时候想到了如下的问题. 给定自然数l和r ,选取2个整数x,y满足l <= x <= y <= r ,使得x|y最大. 其中|表示按位或,即C. C++. Java中的|运算. Input 包含至多10001组测试数据. 第一行有一个正整数,表示数据的组数. 接下来每一行表示一组数据,包含两个整数l,r. 保证 0 <= l <= r <= 1018. Output 对于每组数据输出一行,表示最大的位或. Sample Input 51 100 1…
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<cstdi…
链接 最大的位或 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 3589 Accepted Submission(s): 1369 Problem Description B君和G君聊天的时候想到了如下的问题. 给定自然数l和r ,选取2个整数x,y满足l <= x <= y <= r ,使得x|y最大. 其中|表示按位或,即C.…