(有任何问题欢迎留言或私聊 && 欢迎交流讨论哦

Catalog

Problem:Portal传送门

 原题目描述在最下面。

 每次把\(n\)变成\(⌊ \frac{n}{2}⌋,n\%2, ⌊ \frac{n}{2}⌋\),直至 \(n\) 为\(1\) 或\(0\),问区间\(1\)的数量。

Solution:

 类似线段树的结构,模拟线段树即可。可以枚举加单点更新也可以区间更新。

 \(R-L \leq 1e5, \; n \leq 2^{50}\)

 时间复杂度:\(log(n)\times1e5\)

AC_Code:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<map>
#include<queue>
#include<set>
#include<vector>
#include<cmath>
#include<bitset>
#include<cassert>
#define fi first
#define se second
#define all(x) (x).begin(),(x).end()
#define mme(a,b) memset((a),(b),sizeof((a)))
#define fuck(x) cout<<"* "<<x<<"\n"
#define iis std::ios::sync_with_stdio(false)
using namespace std;
typedef pair<int,int> pii;
typedef long long LL;
const int MXN = 1e5 + 7;
const int MXE = 1e6 + 7;
const int mod = 998244353;
const int INF = 0x3f3f3f3f; LL n, l ,r;
/*****区间更新*****/
LL query(LL L,LL R,LL l,LL r,LL rt){
if(L>r||R<l)return 0;
if(rt<2||l==r)return rt%2;
LL mid = (l + r)/2, ans = 0;
if(L>mid){
ans = query(L,R,mid+1,r,rt/2);
}else if(R<mid){
ans = query(L,R,l,mid-1,rt/2);
}else{
ans = query(L,mid-1,l,mid-1,rt/2)+query(mid+1,R,mid+1,r,rt/2)+query(mid,mid,mid,mid,rt%2);
}
return ans;
}
int main(){
while(~scanf("%lld%lld%lld", &n, &l, &r)){
LL ans = 0, m = n, len = 1;
while(m > 1){
len = len<<1|1;
m >>= 1;
}
printf("%lld\n", query(l,r,1,len,n));
}
return 0;
}
/*****枚举+单点更新*****/
int query(LL p,LL l,LL r,LL rt){
if(rt<2||l==r){
return rt;
}
LL mid = (l + r)/2;
if(p==mid)return query(p,mid,mid,rt%2);
else if(p<mid)return query(p,l,mid-1,rt/2);
return query(p,mid+1,r,rt/2);
}
int main(){
while(~scanf("%lld%lld%lld", &n, &l, &r)){
LL ans = 0, m = n, len = 1;
while(m>1){
len = len<<1|1;
m >>= 1;
}
for(LL i = l; i <= r; ++i){
ans += query(i,1,len,n);
}
printf("%lld\n", ans);
}
return 0;
}

####Problem Description:
![这里写图片描述](https://img-blog.csdn.net/20180828122417863)

Codeforces768B-Code For 1-类似线段树-枚举+单点更新or区间更新的更多相关文章

  1. HDU 4348 To the moon 可持久化线段树,有时间戳的区间更新,区间求和

    To the moonTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.a ...

  2. HDU(1754),线段树,单点替换,区间最值

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 线段树模板题,update功能是单点替换,query是访问区间最大值. #include < ...

  3. HDU - 1166 - 敌兵布阵 线段树的单点修改,区间求和

    #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> ...

  4. 【线段树(单点修改,区间求和)】HDU1166 - 敌军布阵

    hdu1166 敌兵布阵,单点修改,区间求和. [ATTENTION]MAXN要开成节点数的4倍,开得不够会提示TLE. #include<iostream> #include<cs ...

  5. 1754-I Hate It 线段树(单点替换,区间最值)

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  6. 线段树(单点更新and成段更新)

    线段树需要的空间. 区间为1-->n 假设是一棵完全二叉树,且树高为i. 完全二叉树性质:第i层最多有2^(i-1)个结点. 那么 2^(i-1) = n;     i = log2(n)  + ...

  7. hdu1754线段树的单点更新区间查询

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  8. hdu 1754 线段树(Max+单点修改)

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  9. hdu 1166 线段树(sum+单点修改)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

随机推荐

  1. Boost Doc Home

    { //http://charette.no-ip.com:81/programming/doxygen/boost/group__async__read.html#gafe3e905a43504bd ...

  2. JPA中遇到一些异常的分析与解决

    Spring Data JPA踩坑到填坑:1 JPA多对多关 //作者表 //书籍表 Book和Author是多对多关系 先放两张图做个说明:Jpa底层依赖于hibernate,hibernate默认 ...

  3. 微信小程序截取字符串

    我这里用的 str.substring(star,end)第一个参数代表开始位置,第二个参数代表结束位置的下一个位置;若参数值为负数,则将该值转为0;两个参数中,取较小值作为开始位置,截取出来的字符串 ...

  4. elementUi-复选框,使用v-for循环出来的复选框,默认多个值为勾选状态

    1. 使用 v-model="BottomSelectFor[index].tick" 绑定要默认勾选的状态 2.在数组中定义 tick:true,没有的字段默认为false 3. ...

  5. 在Visual C++中使用内联汇编

    一.内联汇编的优缺点 因为在Visual C++中使用内联汇编不需要额外的编译器和联接器,且可以处理Visual C++中不能处理的一些事情,而且可以使用在C/C++中的变量,所以非常方便.内联汇编主 ...

  6. 关于performSelector调用和直接调用区别

    下面两段代码都在主线程中运行,我们在看别人代码时会发现有时会直接调用,有时会利用performSelector调用,今天看到有人在问这个问题,我便做一下总结, [delegate imageDownl ...

  7. I/O复用 poll简介

    1.基本概念 poll起源于SVR3,开始时局限于流设备,在SVR4时取消了此限制,允许poll工作在任何描述符上,但涉及到流设备时,它还提供了附加信息. poll的机制与select类似,与sele ...

  8. Idea 导入项目不能运行

    1.项目结构里面配置sdk,配置output输出目录 2.配置语言等级 配置src源文件目录 配置目录里面添加application,添加main class

  9. python 读取设备的另一个方法

    import time,sys templist = []#设置一个空列表,用来放设备内容deviceslist =[]#设置一个空列表,用来放分割后的设备内容devices = []    #设置一 ...

  10. Jmeter断言-所有断言讲解

    Jmeter断言-所有断言讲解 jmeter中有个元件叫做断言(Assertion),它的作用和loadrunner中的检查点类似: 用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中 ...