题意:给一个数列,维护两个操作,区间开根号、询问区间和

注意到1e12开根号六次后就变成1,而且根号1等于1

也就是说,就算我们用单点修改,只要跳过1,那么修改的次数最多也就是6n

那么维护一个区间最大值,如果最大值<=1就直接跳过这个区间,剩下的单点修改即可

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define LL long long int
using namespace std;
const int maxn=; inline LL rd(){
LL x=;char c=getchar();
while(c<''||c>'') c=getchar();
while(c>=''&&c<='') x=x*+c-'',c=getchar();
return x;
} LL ma[maxn*],sum[maxn*],num[maxn];
int N,M,ch[maxn*][],cnt,root; inline void update(int p){
sum[p]=sum[ch[p][]]+sum[ch[p][]];
ma[p]=max(ma[ch[p][]],ma[ch[p][]]);
} int build(int l,int r){
int p=++cnt;
if(l==r) sum[p]=ma[p]=num[l];
else{
int m=l+r>>;
ch[p][]=build(l,m);ch[p][]=build(m+,r);
update(p);
}return p;
} void change(int p,int l,int r,int x,int y){
if(ma[p]<=) return;
if(l==r) sum[p]=ma[p]=sqrt(sum[p]);
else{
int m=l+r>>;
if(x<=m) change(ch[p][],l,m,x,y);
if(y>m) change(ch[p][],m+,r,x,y);
update(p);
}
} LL query(int p,int l,int r,int x,int y){
if(x<=l&&r<=y) return sum[p];
else{
int m=l+r>>;LL re=;
if(x<=m) re+=query(ch[p][],l,m,x,y);
if(y>m) re+=query(ch[p][],m+,r,x,y);
return re;
}
} int main(){
int i,j;
N=rd();for(i=;i<=N;i++) num[i]=rd();
root=build(,N);M=rd();
for(i=;i<=M;i++){
int k=rd(),l=rd(),r=rd();if(l>r) swap(l,r);
if(!k) change(root,,N,l,r);
else printf("%lld\n",query(root,,N,l,r));
} }

luogu4145 上帝造题的七分钟2 (线段树)的更多相关文章

  1. BZOJ_3038_上帝造题的七分钟2_线段树

    BZOJ_3038_上帝造题的七分钟2_线段树 题意: XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分 ...

  2. Bzoj3038 上帝造题的七分钟2 线段树

    Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1135  Solved: 509 Description XLk觉得<上帝造题的七分钟>不太 ...

  3. B3038 上帝造题的七分钟2 线段树

    这就是一道变得比较奇怪的线段树,维护每个区间的最大值和区间和,然后关键在于每次取根号的话数值下降的特别快,不用几次就都是1了,所以每次暴力单点修改,然后直接找区间最大值,假如区间最大值是1的话,就直接 ...

  4. Codevs 2492 上帝造题的七分钟 2(线段树)

    时间限制: 1 s 空间限制: 64000 KB 题目等级 : 大师 Master 题目描述 Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. " ...

  5. bzoj 3038: 上帝造题的七分钟2 线段树||hdu 4027

    3038: 上帝造题的七分钟2 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1066  Solved: 476[Submit][Status][Dis ...

  6. 【BZOJ3038】上帝造题的七分钟2 线段树

    根据一个数六次√必死,我们可以打标记死了就不管他了,于是有贡献的操作复杂度为O(n*logn*6),然而我们还有由于盲目修改造成的多余代价我们把每次查询的区间分成三部分前全死,中残,后全死,对于中残, ...

  7. GSS4 - Can you answer these queries IV || luogu4145上帝造题的七分钟2 / 花神游历各国 (线段树)

    GSS4 - Can you answer these queries IV || luogu4145上帝造题的七分钟2 / 花神游历各国 GSS4 - Can you answer these qu ...

  8. tyvj P1716 - 上帝造题的七分钟 二维树状数组区间查询及修改 二维线段树

    P1716 - 上帝造题的七分钟 From Riatre    Normal (OI)总时限:50s    内存限制:128MB    代码长度限制:64KB 背景 Background 裸体就意味着 ...

  9. P4514 上帝造题的七分钟——二维树状数组

    P4514 上帝造题的七分钟 求的是矩阵里所有数的和: 维护四个树状数组: #include<cstdio> #include<cstring> #include<alg ...

随机推荐

  1. Centos6.x升级内核方法支持Docker

    Centos6升级内核方法_百度经验https://jingyan.baidu.com/article/7e4409531bda252fc1e2ef4c.html

  2. JS 获取链接中的参数

    1.获取链接全部参数,以对象的形式返回 //获取url中参数 function GetRequest() { var url = location.search; //获取url中"?&qu ...

  3. Laravel 服务容器、服务提供器、契约实例讲解

        前言 刚开始看laravel服务容器.契约.服务提供器的确生涩难懂,不单单是概念繁多,而且实际的demo很难找(找是找到了,但难用啊),最后就隔一段时间看一遍,大概个十来遍,还真给看出个门道, ...

  4. python爬虫之正则表达式

    一.简介 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念 ...

  5. Flask从入门到精通

    1. flask的下载和安装 在windows下安装flask flask依赖于两个库, 即werkzeug 和jinja2 , werkzeug负责服务器的部署, jinja2负责模板引擎,管理安装 ...

  6. UML符号

    转抄, 语言简练. 挺好. -------------------  -------------------  -------------------  -------------------  -- ...

  7. JavaScript之简易http接口测试工具网页版

    简易http接口测试工具网页版,支持get.post请求,支持json格式消息体,form表单暂不支持. httpClient.html <!DOCTYPE html> <html ...

  8. Gitlab中README.MD编写格式模板

    README.MD文件 格式: 源码: # Hbase组件 ## Maven依赖 ``` <dependency> <groupId>catf</groupId> ...

  9. Apache ab 单测 分布式

    使用synchronized 处理并发 缺点:无法做到细粒度控制 只适合单点的情况 使用Redis作为分布式锁 setnx命令 设计模式 :使用 !setnx 加锁 getset命令

  10. SVG路径

    前面的话 本文将详细介绍SVG路径 path字符串 路径(path)是一个非常强大的绘图工具,可以用path元素绘制矩形(直角矩形或者圆角矩形).圆形.椭圆.折线形.多边形,以及一些其他的形状,例如贝 ...