AGC015D题解
简要题意
给定一个区间 \([l,r]\),从中选出若干整数按位或,求可能出现的数的方案数。
数据范围:\(1\le l\le r\le2^{60}\)。
思路
首先对于 \([l,r]\) 里的数全都满足条件,然后因为是按位或,所以 \(l,r\) 二进制下的一段前缀就与答案无关可以先去掉。
现在我们只需要考虑比 \(r\) 还要大的数。去掉一段前缀后 \(r\) 二进制的最高位一定是 \(1\),设 \(x=highbit(r)\),我们可以根据 \(x\) 将这个区间划分成两部分 \([l,x)\) 和 \([x,r]\)。对于第一个区间里,任何数按位或答案都在第一个区间内,所以不用考虑,我们只用考虑只在第二个区间选数或者两个区间都选数。你会发现在第一个区间选多少数都可以等价为选一个数,所以其实只用考虑选两个数的情况。
- 如果只在第二个区间选数,我们可以不看最高位的一,因为他是公共部分。假设剩下的部分为 \(y\),那么在第二个区间选数就等价于在 \([0,y]\) 内选数,设 \(z=highbit(y)\),实际上选出来的就是 \([x,x+2z)\) 的所有数,去掉小于等于 \(r\) 的答案区间就为 \((r,x+2z)\);
- 如果在两个区间中各选一个数,我们可以发现对于第一个区间我们可以选 \([l,x)\),当第二个区间选 \(x\) 的时候就可以凑出 \([x+l,2x)\) 中的所有数,答案区间就为 \([\max(x+l,r+1),2x)\)。
最后只需要判断一下后两种情况是否有交集,如果有交集那么最后答案就直接为 \([l,2x)\),否则就把答案区间累加即可。时间复杂度只有 \(O(\log r)\),非常优秀!
代码
signed main(){
// fileio(fil);
l = rd(), r = rd();
if(l == r)return puts("1"), 0;
for(int i = 60; ~ i; --i){
x |= r >> i << i;
if((l >> i) ^ (r >> i))break;
}
y = x & - x; r += y - x;
l += y - x; ans = r - l + 1;
for(x = 1; x + y <= r; x <<= 1); x += y - 1;
if((y | l) <= x)return printf("%lld", (y << 1) - l), 0;
ans += (y << 1) - (y | l) + x - r;
printf("%lld", ans);
return 0;
}
AGC015D题解的更多相关文章
- AtCoder随做
突然发现只有我没写过 AT. 没写题解不意味着没做,有的忘了写或者太草率了就算了. 部分前言删了. 目录 ABC020D ABC241G ABC268 AGC003D AGC004D AGC004E ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- Qt编写安防视频监控系统62-子模块6预置位
一.前言 预置位功能,只对带有预置位的球机才起作用,有云台的球机未必有预置位,要仔细查看清楚,不清楚可以询问厂家或者查阅手册,在本模块中,可以获取预置位.添加预置位.调用预置位.删除预置位.调用起始位 ...
- Qt编写安防视频监控系统35-onvif抓拍图片
一.前言 以前不知道onvif也可以做抓拍功能,直到近期重新用Onvif Device Test Tool工具测试的时候,发现还有抓图的接口,于是抓跑分析出要收发的数据,然后加入到自己封装的onvif ...
- springboot~多节点应用里的雪花算法唯一性
雪花算法的唯一性,在单个节点中是可以保证的,对应kubernetes中的应用,如果是横向扩展后,进行多副本的情况下,可能出现重复的ID,这需要我们按着pod_name进行一个workId的生成,我还是 ...
- 三步把asp.net core 3.1应用部署到centos7
一.编译发布Asp.net core 应用 直接使用vs2019编译发布后,通过ftp上传到centos的 /www/ 目录下,不再赘述. 二.centos安装asp.net core runtime ...
- 夜莺监控支持 ES 日志告警了
夜莺项目( https://github.com/ccfos/nightingale )发布了 v8.0.0-beta.3 版本,这个版本主要是支持了 ES 日志告警,下面给大家介绍一下. 新版本下载 ...
- 国家和地区代码列表,ISO 3166-1:2006
本文根据ISO 3166-1:2006(International Standard Norme Internationale) 英文版(含2007年补充说明)整理.与ISO 3166-1:1997相 ...
- CSS JS 自适应菜单
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- biancheng-Spring Cloud教程
目录http://c.biancheng.net/springcloud/ 1微服务是什么2Spring Cloud是什么3Spring Cloud Eureka4Spring Cloud Ribbo ...
- 分布式事务---2PC和3PC原理TCC事务
分布式事务(1)---2PC和3PC原理 分布式事物基本理论:基本遵循CPA理论,采用柔性事物特征,软状态或者最终一致性特点保证分布式事物一致性问题. 分布式事物常见解决方案: 2PC两段提交协议 3 ...
- G1原理—8.如何优化G1中的YGC
大纲 1.5千QPS的数据报表系统发生性能抖动的优化(停顿时间太小导致新生代上不去) 2.由于产生大量大对象导致系统吞吐量降低的优化(大对象太多频繁Mixed GC) 3.YGC其他相关参数优化之TL ...