-贪心- [CF484A]Bits

题目描述

Link

Solution

别以为这是个A题就很简单,我差点被坑了。。。。

这题就是每一位贪心的放 $1$,如果超过 $r$ 了就 break

话说一开始我还想用二分来着,后来发现答案并不单调。

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define MAXN 100010
#define ll long long
int T;
ll l, r, ans;
int main() {
scanf("%d", &T);
while (T--) {
scanf("%I64d%I64d", &l, &r);
ans = l;
for (ll i = 0; i < 62; i++) {
ll m = 1LL << i;
ans |= m;
if (ans > r) {
ans ^= m;
break;
}
}
printf("%I64d\n", ans);
}
}
文章作者: RiverFun
文章链接: https://stevebraveman.github.io/blog/2019/06/30/90/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 RiverFun

评论