LOJ10128. 花神游历各国
花神喜欢步行游历各国,顺便虐爆各地竞赛。花神有一条游览路线,它是线型的,也就是说,所有游历国家呈一条线的形状排列,花神对每个国家都有一个喜欢程度(当然花神并不一定喜欢所有国家)。
每一次旅行中,花神会选择一条旅游路线,它在那一串国家中是连续的一段,这次旅行带来的开心值是这些国家的喜欢度的总和,当然花神对这些国家的喜欢程序并不是恒定的,有时会突然对某些国家产生反感,使他对这些国家的喜欢度 δ 变为 sqrt (δ)(可能是花神虐爆了那些国家的 OI,从而感到乏味)。
现在给出花神每次的旅行路线,以及开心度的变化,请求出花神每次旅行的开心值。
输入格式
第一行是一个整数 N,表示有 N 个国家;
第二行有 N 个空格隔开的整数,表示每个国家的初始喜欢度 δi;
第三行是一个整数 M,表示有 M 条信息要处理;
第四行到最后,每行三个整数 x,l,r,当 x=1 时询问游历国家 l 到 r 的开心值总和,也就是∑rδi ,当 x=2 时国家 l 到 r 中每个国家的喜欢度δi 变为sqrt(δi) 。
输出格式
每次 x=1 时,每行一个整数。表示这次旅行的开心度。
样例
样例输入
4
1 100 5 5
5
1 1 2
2 1 2
1 1 2
2 2 3
1 1 4
样例输出
101
11
11
数据范围与提示
对于全部数据,1≤n≤10^5,1≤m≤2×10^5,1≤l≤r≤n,0≤δi≤10^9。
注:建议使用 sqrt 函数,且向下取整。
__________________________________________________________________________
懒惰标记为bool型,标记当前区域是否已经无需开方,也就是是否都是1或0.
bz[cur]=bz[cur<<1] && bz[cur<<1|1]
如果懒惰标记为1,则无需再做修改。
__________________________________________________________________________
1 #include<bits/stdc++.h>
2 using namespace std;
3 const int maxn=1e5+10;
4 typedef long long ll;
5 ll sum[maxn<<2],a[maxn];
6 bool delt[maxn<<2];
7 ll n,m;
8 void build(ll cur,ll l,ll r)
9 {
10 if(l==r)
11 {
12 sum[cur]=a[l];
13 if(sum[cur]==0 || sum[cur]==1)delt[cur]=1;
14 return ;
15 }
16 ll mid=(l+r)>>1;
17 build(cur<<1,l,mid);
18 build(cur<<1|1,mid+1,r);
19 sum[cur]=sum[cur<<1]+sum[cur<<1|1];
20 delt[cur]=delt[cur<<1] && delt[cur<<1|1];
21 }
22 void change(ll cur,ll l,ll r,ll ql,ll qr)
23 {
24 if(delt[cur])return;
25 if(l==r)
26 {
27 sum[cur]=sqrt(sum[cur]);
28 if(sum[cur]==1 || sum[cur]==0)delt[cur]=1;
29 return ;
30 }
31 ll mid=(l+r)>>1;
32 if(ql<=mid)change(cur<<1,l,mid,ql,qr);
33 if(mid<qr)change(cur<<1|1,mid+1,r,ql,qr);
34 sum[cur]=sum[cur<<1]+sum[cur<<1|1];
35 delt[cur]=delt[cur<<1] && delt[cur<<1|1];
36 }
37 ll query(ll cur,ll l,ll r,ll ql,ll qr)
38 {
39 if(ql<=l && r<=qr)return sum[cur];
40 ll ans=0,mid=(l+r)>>1;
41 if(ql<=mid)ans+=query(cur<<1,l,mid,ql,qr);
42 if(mid<qr)ans+=query(cur<<1|1,mid+1,r,ql,qr);
43 return ans;
44 }
45 int main()
46 {
47 scanf("%lld",&n);
48 for(int i=1;i<=n;++i)scanf("%lld",a+i);
49 build(1,1,n);
50 scanf("%lld",&m);
51 for(int op,ql,qr,i=0;i<m;++i)
52 {
53 scanf("%d%d%d",&op,&ql,&qr);
54 if(op==1)printf("%lld\n",query(1,1,n,ql,qr));
55 else change(1,1,n,ql,qr);
56 }
57 return 0;
58 }
LOJ10128. 花神游历各国的更多相关文章
- BZOJ-3211花神游历各国 并查集+树状数组
一开始想写线段树区间开方,简单暴力下,但觉得变成复杂度稍高,懒惰了,编了个复杂度简单的 3211: 花神游历各国 Time Limit: 5 Sec Memory Limit: 128 MB Subm ...
- BZOJ 3211: 花神游历各国( 线段树 )
线段树...区间开方...明显是要处理到叶节点的 之前在CF做过道区间取模...差不多, 只有开方, 那么每个数开方次数也是有限的(0,1时就会停止), 最大的数10^9开方10+次也就不会动了.那么 ...
- BZOJ 3211: 花神游历各国【线段树区间开方问题】
3211: 花神游历各国 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 3514 Solved: 1306[Submit][Status][Discu ...
- bzoj3211花神游历各国 线段树
3211: 花神游历各国 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 4252 Solved: 1547[Submit][Status][Discu ...
- 【BZOJ】【3211】花神游历各国
线段树/暴力 线段树区间开方 唉,我傻逼了一下,TLE了一发,因为没考虑到0的情况…… 好吧简单来说一下,线段树动态查询区间和大家都会做……比较麻烦的是这次的修改变成开方了,然而这并没有什么好虚的,注 ...
- BZOJ3211: 花神游历各国(线段树)
3211: 花神游历各国 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 5692 Solved: 2114[Submit][Status][Discu ...
- 【BZOJ3211】花神游历各国 并查集+树状数组
[BZOJ3211]花神游历各国 Description Input Output 每次x=1时,每行一个整数,表示这次旅行的开心度 Sample Input 41 100 5 551 1 22 1 ...
- [BZOJ3211]花神游历各国&&[BZOJ3038] 上帝造题的七分钟2 树状数组+并查集
3211: 花神游历各国 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 4057 Solved: 1480[Submit][Status][Discu ...
- BZOJ3211花神游历各国
BZOJ3211花神游历各国 BZOJ luogu 分块 记一个all表示该块是否全部<=1,如果all不为真就暴力修改 因为一个数被开根的次数不多,即使\(10^{12}\)只要开根6次也会变 ...
随机推荐
- Windows下不同版本的JDK共存
1.安装jdk7,将C:\Windows\System32目录下的java.exe.javaw.exe.javac.exe删除. 2.安装jdk8,将系统环境变量path中的C:\ProgramDat ...
- react状态管理器之mobx
react有几种状态管理器,今天先来整理一下mobx状态管理器,首先了解一下什么是mobx 1.mobx成员: observable action 可以干嘛: MobX 的理念是通过观察者模式对数据做 ...
- JSP 的 4 种作用域?
page:代表与一个页面相关的对象和属性. request:代表与客户端发出的一个请求相关的对象和属性.一个请求可能跨越多个页面,涉及多个 Web 组件:需要在页面显示的临时数据可以置于此作用域. s ...
- 【分布式锁的演化】“超卖场景”,MySQL分布式锁篇
前言 之前的文章中通过电商场景中秒杀的例子和大家分享了单体架构中锁的使用方式,但是现在很多应用系统都是相当庞大的,很多应用系统都是微服务的架构体系,那么在这种跨jvm的场景下,我们又该如何去解决并发. ...
- hadoop集群中zkfc的作用和工作过程
一. 简单了解NameNode的ZKFC机制 NameNode的HA可以个人认为简单分为共享editLog机制和ZKFC对NameNode状态的控制 一般导致NameNode切换的原因 ZKFC的作用 ...
- [论文阅读笔记] node2vec Scalable Feature Learning for Networks
[论文阅读笔记] node2vec:Scalable Feature Learning for Networks 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 由于DeepWal ...
- sqlserver 清除表数据和拷贝表结构的操作
最近在做一个ERP系统需要导入数据,因此用到了sql的一些操作,在这里记录一下. 1.清除表数据: Delete from 表名称 where XXX 2.拷贝表结构,需求是新增一个和某个表数据格式一 ...
- 包与包管理.md
软件包:源码包 RPM包 二进制包 RPM包依赖性 模块依赖查询 www.rpmfind.net umount 解除CDROM挂载 mount 挂载 umount [/dev/device ...
- linux环境下oracle 11g 静默安装
安装环境 Linux服务器:oracle linux 6.6 64位 Oracle服务器:Oracle11gR2 64位 系统要求 1.Linux安装Oracle系统要求 系统要求 说明 内存 必须高 ...
- 【渲染引擎】Blender的2021年最佳渲染引擎(上)
Blender最终摆脱了"古怪的孩子"的装束,并穿上了更为严肃和受人尊敬的" 3D强者". 它已在业界获得广泛认可,许多工作室和艺术家正在将其纳入他们的产品线. ...