题目链接:http://codeforces.com/contest/768/problem/B

题意:给你一个数n和区间l,r,每次都能把任意数拆成n/2,n%2,n/2三个数,直到变成0和1,问区间l,r里有多少个1

题解:明显最后生成的是对称的,所以只要考虑一半就行,但是这里的n,l,r很大,有2的50次,最后起码有2的50

次长所以dfs直接生成字符串是不行的也会超时,但是r-l才10的5次所以可以考虑一下二分。加上这题的对称,二分很

方便。

附上二分的代码。二分的是位置,l到r之间的位置,mid值是num对应的中间值,然后取什么就看num%2是什么即可。

void binsearch(long long le , long long ri , long long num) {

long long mid = (le + ri) >> 1;

if(ri < l || le > r || le > ri)//注意要有le>ri退出,这很关键也是二分退出的条件。

return ;

if(mid < l) {

binsearch(mid + 1 , ri , num / 2);

}

else if(mid > r) {

binsearch(le , mid - 1 , num / 2);

}

else {

ans += num % 2;

binsearch(le , mid - 1 , num / 2);

binsearch(mid + 1 , ri , num / 2);

}

}

#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
string s , sl;
long long n , l , r , ans;
long long dfs(long long num) {
if(num == 1) {
return 1;
}
return 1 + 2 * dfs(num / 2);
}
void binsearch(long long le , long long ri , long long num) {
long long mid = (le + ri) >> 1;
if(ri < l || le > r || le > ri)
return ;
if(mid < l) {
binsearch(mid + 1 , ri , num / 2);
}
else if(mid > r) {
binsearch(le , mid - 1 , num / 2);
}
else {
ans += num % 2;
binsearch(le , mid - 1 , num / 2);
binsearch(mid + 1 , ri , num / 2);
}
}
int main() {
cin >> n >> l >> r;
if(n == 0) {
cout << 0 << endl;
return 0;
}
long long count = dfs(n);
binsearch(1 , count , n);
cout << ans << endl;
return 0;
}

codeforces 768 B. Code For 1(二分)的更多相关文章

  1. [Codeforces 1197E]Culture Code(线段树优化建图+DAG上最短路)

    [Codeforces 1197E]Culture Code(线段树优化建图+DAG上最短路) 题面 有n个空心物品,每个物品有外部体积\(out_i\)和内部体积\(in_i\),如果\(in_i& ...

  2. Codeforces Round #324 (Div. 2) C (二分)

    题目链接:http://codeforces.com/contest/734/problem/C 题意: 玩一个游戏,一开始升一级需要t秒时间,现在有a, b两种魔法,两种魔法分别有m1, m2种效果 ...

  3. Codeforces Round #377 (Div. 2)D(二分)

    题目链接:http://codeforces.com/contest/732/problem/D 题意: 在m天中要考k个课程, 数组a中有m个元素,表示第a[i]表示第i天可以进行哪门考试,若a[i ...

  4. Codeforces Gym 100231B Intervals 线段树+二分+贪心

    Intervals 题目连接: http://codeforces.com/gym/100231/attachments Description 给你n个区间,告诉你每个区间内都有ci个数 然后你需要 ...

  5. Codeforces 484B Maximum Value(排序+二分)

    题目链接: http://codeforces.com/problemset/problem/484/B 题意: 求a[i]%a[j] (a[i]>a[j])的余数的最大值 分析: 要求余数的最 ...

  6. Educational Codeforces Round 21 D.Array Division(二分)

    D. Array Division time limit per test:2 seconds memory limit per test:256 megabytes input:standard i ...

  7. Codeforces 768B B. Code For 1

    参考自:https://www.cnblogs.com/ECJTUACM-873284962/p/6423483.html B. Code For 1 time limit per test:2 se ...

  8. CodeForces 570D - Tree Requests - [DFS序+二分]

    题目链接:https://codeforces.com/problemset/problem/570/D 题解: 这种题,基本上容易想到DFS序. 然后,我们如果再把所有节点分层存下来,那么显然可以根 ...

  9. CodeForces - 847B Preparing for Merge Sort 二分

    http://codeforces.com/problemset/problem/847/B 题意:给你n个数(n<2e5)把它们分成若干组升序的子序列,一行输出一组.分的方法相当于不断找最长递 ...

随机推荐

  1. python中的赋值操作与C语言中的赋值操作中的巨大差别

    首先让我们来看一个简单的C程序: a = ; b = a; b = ; printf("a = %d, b = %d\n", a, b); 相信只要学过C语言, 不用运行程序便能知 ...

  2. JAVA开始(基础篇)

    数据类型 Boolean        1位Byte              1个字节(8位)Short             2个字节Char              2个字节Int      ...

  3. Qt Socket 收发图片——图像拆包、组包、粘包处理

    之前给大家分享了一个使用python发图片数据.Qt server接收图片的Demo.之前的Demo用于传输小字节的图片是可以的,但如果是传输大的图片,使用socket无法一次完成发送该怎么办呢?本次 ...

  4. 从boosting谈起

    Boosting 将一些表现效果一般(可能仅仅优于随机猜测)的模型通过特定方法进行组合来获得一个表现效果较好的模型.抽象地说,模型的训练过程是对一任意可导目标函数的优化过程. Adaptive boo ...

  5. Install eclipse ns3 in ubuntu 14.04

    1. NS3 install 参考NS3 tutorial即可. 2.eclipse 2.1下载 下载地址:http://www.eclipse.org/downloads/              ...

  6. indexedDB添加,删除,获取,修改

    [toc] 在chrome(版本 70.0.3538.110)测试正常 编写涉及:css, html, js 在线演示codepen html代码 <h1>indexedDB</h1 ...

  7. POI通用导出Excel数据(包括样式设计)

    前言 前一段时间我写过通用的导入Excel,前几天也写了导出pdf格式的,还有我之前搞得导出Word,我在之前的博客也都介绍了导出和导入是一个道理,无非是一个获取一个是赋值.昨天有一位同仁看了我的Ex ...

  8. 发布一个自己的jar包给全球人使用

    目录 项目准备 sonatype 注册 申请sonatype工单 gpg配置 项目配置 依赖oss-parent 自定义配置 pom配置 全局settings配置 发布 验证 maven 项目对于我们 ...

  9. Maven 项目使用mybatis的环境搭建-基于xml形式实现查询所有的功能

    首先了解一下什么是 MyBatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. ...

  10. Kubernetes 服务发现

    目录 什么是服务发现? 环境变量 DNS 服务 Linux 中 DNS 查询原理 Kubernetes 中 DNS 查询原理 调试 DNS 服务 存根域及上游 DNS 什么是服务发现? 服务发现就是一 ...