codeforces 484A Bits 贪心->位数
来源:互联网 发布:struct node *link,*p 编辑:程序博客网 时间:2024/06/05 16:17
点击打开链接
给你一个区间l,r,让你从此区间中找到二进制数中1的个数最多的那个数,若有多个,取最小。
将l和r转换成二进制数,那么将这两个数从高位往地位开始判断,如果相同,那么答案在这位上也是此值,如果不相等,那么答案在此为上为0,然后剩下的低位都为1。当然特殊情况就是当判断在某位不同时,r的剩下低位全是1,那么在此不同的位上也应该是1。
//841 ms 2300 KB#include<stdio.h>#include<string.h>#include<algorithm>#define ll __int64using namespace std;ll s1[100007],s2[100007],s[100007];int main(){ int n; scanf("%d",&n); while(n--) { ll l,r; int num1=0,num2=0; scanf("%I64d%I64d",&l,&r); memset(s1,0,sizeof(s1)); memset(s2,0,sizeof(s2)); memset(s,0,sizeof(s)); while(l) { s1[num1++]=l%2; l>>=1; } while(r) { s2[num2++]=r%2; r>>=1; } ll ans=0; int flag=0,i; int num=max(num1,num2); for(i=num-1; i>=0; i--) { if(s2[i]==s1[i])s[i]=s2[i]; else break; } for(int k=i; k>=0; k--) { s[k]=1; if(!s2[k])flag=1; } if(flag)s[i]=0; ll aa=1; for(int k=0; k<num; k++,aa*=2) ans+=s[k]*aa; printf("%I64d\n",ans); } return 0;}
0 0
- codeforces 484A Bits 贪心->位数
- Codeforces 484A Bits(贪心)
- Codeforces 484A - Bits (贪心)
- Codeforces 484A. Bits 贪心
- [Codeforces 484A]Bits(拆位贪心)
- codeforces 484a Bits
- codeforces 484 A-Bits
- CodeForces 484A Bits
- codeforces-484A Bits
- Codeforces 484A Bits
- codeforces 484A bits
- Codeforces-484A-Bits
- Bits - CodeForces 484 A 水题
- codeforces 484A Bits 数论
- codeforces C. Bits 贪心
- Review of codeforces 484A Bits based on python
- A. Dragons codeforces+贪心
- CodeForces 288A--贪心
- Operating system error number 13 in a file operation
- java基础面向对象(下)
- 快速选择(QuickSelect)的平均时间复杂度分析
- 题目1031:xxx定律 题目1033:xxx定律
- Unity客户端通信测试问题处理(二)
- codeforces 484A Bits 贪心->位数
- web1.0和web2.0的HTML常用标签
- Bloom Filter 主流Hash散列算法介绍
- HTTP 权威指南学习计划
- IOS MKNetwork从网站api获取数据出现Server [xxx] is reachable via Wifi
- 异常
- NVL函数误区
- 单链表的基本操作
- sync kernel