博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU - 5491 The Next 2015 ACM/ICPC Asia Regional Hefei Online
阅读量:4594 次
发布时间:2019-06-09

本文共 840 字,大约阅读时间需要 2 分钟。

从D+1开始,对于一个数x,区间[x,x+lowbit(x))内的数字的二进制位上1的数量整体来说是单调不减的,因此可快速得出1在这个区间的取值范围。

每次判断一下有没有和[s1,s2]有没有交集,一旦发现解就贪心最小的一个。

复杂度是O(T*log(ans-D))

#include
using namespace std;inline int read(){ char c; while(c=getchar(),c<'0'||c>'9'); int re = c-'0'; while(c=getchar(),c>='0'&&c<='9') re = re*10+c-'0'; return re;}#define lowbit(x) (x&-x)int bc(long long x){ int re = 0; while(x){ re += x&1; x>>=1; } return re;}//bitset<64> bs;#define cer(x) bs = x; cout<
<
s2){ int ex = bc(lb-1); if(s1 > ct+ex || s2 < ct) { cur += lb; lb = lowbit(cur); ct = bc(cur); }else { int ad = max(ct,s1)-ct; cur += (1<

 

转载于:https://www.cnblogs.com/jerryRey/p/4842501.html

你可能感兴趣的文章
(文件过多时)删除目录下全部文件
查看>>
T-SQL函数总结
查看>>
python 序列:列表
查看>>
web移动端
查看>>
pythonchallenge闯关 第13题
查看>>
linux上很方便的上传下载文件工具rz和sz使用介绍
查看>>
React之特点及常见用法
查看>>
【WEB前端经验之谈】时间一年半,或沉淀、或从零开始。
查看>>
优云软件助阵GOPS·2017全球运维大会北京站
查看>>
linux 装mysql的方法和步骤
查看>>
poj3667(线段树区间合并&区间查询)
查看>>
51nod1241(连续上升子序列)
查看>>
SqlSerch 查找不到数据
查看>>
集合相关概念
查看>>
Memcache 统计分析!
查看>>
(Python第四天)字符串
查看>>
个人介绍
查看>>
使用python动态特性时,让pycharm自动补全
查看>>
关于R软件的安装
查看>>
MySQL数据库免安装版配置
查看>>