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

注意到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. semantic-ui 分割线

    分割线即原生html中的<hr>标签.不过semantic-ui中将<hr>美化了一下下. 1.基础分割线 需要注意的是分割线只能使用div标签和p标签,不能使用span标签. ...

  2. Mysql之常用操作(2)

    Windows服务 -- 启动MySQL net start mysql -- 创建Windows服务 sc create mysql binPath= mysqld_bin_path(注意:等号与值 ...

  3. jmeter 连接数据库测试笔记

    JDBC 常用mysql和oracal的jar包下载地址.jdbc driver class配置参考我的博客https://www.cnblogs.com/jackzz/p/9998975.html ...

  4. Tomcat异常及解决办法——持续更新中

    公司项目,开发语言为java,中间件为Tomcat,运行过程中,从Tomcat出现了一些异常,现将异常及解决办法记录如下,仅供参考.(不断在补充中.......) 异常一: 1.日志内容 org.ap ...

  5. 关于标准的知识 GB ISO 等内容

    1. 来自百度知道: GB:GB 即"国标"的汉语拼音缩写,为中华人民共和国国家标准的意思. ISO:国际标准化组织的英语简称.其全称是International Organiza ...

  6. [转帖]十分钟快速理解DPI和PPI,不再傻傻分不清!

    十分钟快速理解DPI和PPI,不再傻傻分不清! https://baijiahao.baidu.com/s?id=1605834796518990333&wfr=spider&for= ...

  7. 国内的go get问题的解决

    在国内采用go get有时会下载不到一些网站如golang.org的依赖包. 方法1(亲测有效): gopm 代替go 下载第三方依赖包可以采用gopm从golang.org一些镜像网站上下载. 注意 ...

  8. linux中一些特殊的中文文件不能删除问题

    例: [root@iZ2zecl4i8oy1rvs00dqzeZ tmp]# ,),(,,' [root@iZ2zecl4i8oy1rvs00dqzeZ tmp]# echo "rm -rf ...

  9. array_merge

    1.array_merge 中有两个参数:将两个关联数组合并为一个数组 <?php $a1=array("a"=>"red","b&quo ...

  10. Mybatis -SqlMapConfig.xml环境配置

    SqlMapConfig.xml的配置内容和顺序如下(顺序不能乱): Properties(属性) Settings(全局参数设置) typeAliases(类型别名) typeHandlers(类型 ...