[HDU5969] 最大的位或】的更多相关文章

HDU-5969:http://acm.hdu.edu.cn/showproblem.php?pid=5969 一开始也是分了类,觉得要两种情况,l 与 r 位数相同与不同的情况,仔细想一下,可以一起处理,从最高位(左侧符号位)开始,遇到不同后面全部补1即可. 刚写好交信心满满,一交就Wrong answer,写了一个暴力求 的对数器,确定算法是对的,也知道了问题在哪. 第一,数据相同时,没有结果,要处理. 第二,碰到不同后,将 r 后面的全部置1: r = r | (t << s); 一开始…
题目类型:位运算 传送门:>Here< 题意:给出\(l\)和\(r\),求最大的\(x|y\),其中\(x,y\)在\([l,r]\)范围内 解题思路 首先让我想到了前面那题\(Bits\),然而并不是1越多越好,而是越前面越好(于是就\(WA\)了--) 其实很简单.分类讨论: 如果左右边界转为二进制后长度不等,那么左边界一定能够做到全为1,且长度为右边界-1.再或以下就又变长了一格了.于是答案很明显是\(2^{len(r)}-1\) 如果长度相等,我们发现他们肯定有公共前缀.而从高到低第…
对于右端点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…
题目: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…
[&]位与运算符: 按位与运算符"&"是双目运算符. 其功能是参与运算的两数各对应的二进位相与.只有对应的两个二进位均为1时,结果位才为1 ,否则为0.参与运算的数以补码方式出现. 如: 00001001 & 00000101 = 00000001 [|]位或运算符: 按位或运算符"|"是双目运算符. 其功能是参与运算的两数各对应的二进位相或.只要对应的二个二进位有一个为1时,结果位就为1.参与运算的两个数均以补码出现. 00001001 |…
Blake is a CEO of a large company called "Blake Technologies". He loves his company very much and he thinks that his company should be the best. That is why every candidate needs to pass through the interview that consists of the following probl…
最大的位或 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…
直接上代码,原来的代码中,switch中的第一个case,判断之后,少加了个break 跳出判断语句,害得我查了半天,“怎么样式老是不对,不科学啊,呵呵,原来是没跳出case的判断了,还会执行后面的判断!!,哎,嘿嘿,不过后来还是发现了,开心中...” 原文地址:http://www.cnblogs.com/wybztn/archive/2009/11/18/1605285.html 这里还有个重要的设计技巧, 0001, 0010, 0100, 1000各代表一种情况的话,组合起来就有很多种情…
1. bic  (Bit Clear)位清除指令bic指令的格式为:bic{条件}{S}  Rd,Rn,operand bic指令将Rn 的值与操作数operand2 的反码按位逻辑"与",结果存放到目的寄存器Rd 中. 指令示例: bic R0,R0,#0x1F : //将R0最低5位清零,其余位不变. 2.orr 位或指令 orr指令的格式为:orr{条件}{S}  Rd,Rn,operand orr指令将Rn 的值与操作数operand2按位逻辑"或",结果存…