#include<bits/stdc++.h>
最近准备往算法上搞了,搞的结果就是基本上写不出来,得不断搜题解,搜题解的过程中还有我没学过的好多知识,,,,然后就,奥利给,学!!
发现了一个万能头文件,它包含了目前c++包含的所有头文件!!!!!!
whatever,炸裂开心啊哈哈哈哈哈哈
2.左移右移运算符
转载:
https://blog.csdn.net/qq_39790992/article/details/82313960
因为博文真的太长了,所以就放个链接在这吧...
题目:
n组询问,每次给出一个区间l, rl,r,你需要输出在这个区间内二进制表示中1的个数最多的数
如有多个答案,输出最小的那个
输入输出样例
输入
3
1 2
2 4
1 10
输出
1
3
7
心路历程:
这道题我刚开始很快就写出来了,用的暴力,然而,,显而易见的它过不了,会超时,QAQ
所以我就又查了题解
大佬们说这明显用的是贪心
在位权小的位置放1能使结果最小。
代码:
#include <bits/stdc++.h>
using namespace std ;
#define int long long
int n,l,r ;
signed main(){ //signed main 是因为define long long了
scanf("%lld",&n) ;
while(n--){
scanf("%lld%lld",&l,&r) ;
for (int i=0;;i++){
if ((l|(1ll<<i))>r) break ;
l|=(1ll<<i) ;
}
printf("%lld\n",l) ;
}
return 0 ;
}
yuko
原文:https://www.cnblogs.com/yuko9/p/13735746.html