区间开平方,区间查询。

lazy标记改为区间是否全是1或者0,这样的区间是没有更新价值的。

//Stay foolish,stay hungry,stay young,stay simple
#include<iostream>
#include<cmath>
#include<cstdio>
#include<cctype>
#define sq(x) (floor(sqrt(x)))
using namespace std; const int MAXN=500005; inline int read_d(){
int ret=0,op=1;char c;
while(c=getchar(),!isdigit(c))op=c=='-'?-1:1;
while(isdigit(c)){
ret=ret*10+c-'0';
c=getchar();
}
return ret*op;
} int n;
int sum[MAXN],a[MAXN];
bool lazy[MAXN];
int l[MAXN],r[MAXN],bl[MAXN];
int block,num;
void build(){
block=sqrt(n);
num=n/block;
if(n%block) num++;
for(int i=1;i<=n;i++){
l[i]=(i-1)*block+1;
r[i]=i*block;
bl[i]=(i-1)/block+1;
sum[bl[i]]+=a[i];
}
} void updata_block(int id){
lazy[id]=1;sum[id]=0;
for(int i=l[id];i<=r[id];i++){
if(a[i]>=2) lazy[id]=0;
a[i]=sq(a[i]);
sum[id]+=a[i];
}
} void updata(int x,int y){
if(bl[x]==bl[y]){
if(lazy[bl[x]]) return;
for(int i=x;i<=y;i++){
sum[bl[i]]-=a[i];
a[i]=sq(a[i]);
sum[bl[i]]+=a[i];
}
return;
}
for(int i=x;i<=r[bl[x]];i++){
sum[bl[i]]-=a[i];
a[i]=sq(a[i]);
sum[bl[i]]+=a[i];
}
for(int i=l[bl[y]];i<=y;i++){
sum[bl[i]]-=a[i];
a[i]=sq(a[i]);
sum[bl[i]]+=a[i];
}
for(int i=bl[x]+1;i<=bl[y]-1;i++){
if(lazy[i]) continue;
updata_block(i);
}
} int query(int x,int y){
int ret=0;
if(bl[x]==bl[y]){
for(int i=x;i<=y;i++) ret+=a[i];
return ret;
}
for(int i=x;i<=r[bl[x]];i++) ret+=a[i];
for(int i=l[bl[y]];i<=y;i++) ret+=a[i];
for(int i=bl[x]+1;i<=bl[y]-1;i++) ret+=sum[i];
return ret;
} int main(){
n=read_d();
for(int i=1;i<=n;i++) a[i]=read_d();
build();
for(int i=1;i<=n;i++){
int q=read_d(),x=read_d(),y=read_d(),z=read_d();
if(q==0) updata(x,y);
else printf("%d\n",query(x,y));
}
return 0;
}

最新文章

  1. 学习linux/unix编程方法的建议(转)
  2. oracle 异常
  3. RichTextBoxEx2
  4. AutoMapperHelper
  5. 【C语言】15-预处理指令1-宏定义
  6. linux代码段,数据段,BSS段, 堆,栈(二)
  7. gcj_2016_Round1_B
  8. Windows IP安全策略。
  9. (转)互联网保险O2O平台微服务架构设计
  10. phthon网络编程
  11. hdu5904 LCIS
  12. C++ 程序在运行时不显示dos界面
  13. Win7 64位 + LoadRunner 11录制时弹不出IE的解决办法 Win7 64位 + LoadRunner 11录制时弹不出IE的解决办法
  14. 工作效率提升之Eclipse篇(1):干掉烦人的xml文件的validation
  15. node.js获取本机Ip, hostName, mac
  16. Python图形编程探索系列-06-按钮批量生产函数
  17. tensorflow 指定使用gpu处理,tensorflow占用多个GPU但只有一个在跑
  18. php使用redis扩展以及安装redis(linux下)
  19. Python - WebDriver 识别登录验证码
  20. shell 脚本实战笔记(5)--搭建资源的镜像服务器

热门文章

  1. HDU5145:5145 ( NPY and girls ) (莫队算法+排列组合+逆元)
  2. hdu 1573 X问题【扩展中国剩余定理】
  3. Luogu P2114[NOI2014]起床困难综合症 【贪心/位运算】By cellur925
  4. (六)SpringBoot整合Swagger2框架
  5. redis查数据
  6. python之unittest
  7. Codeforces Round #505 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final) 题解
  8. [APIO2012]派遣 洛谷P1552 bzoj2809 codevs1763
  9. linux常用的shell命令
  10. vue-resource emulateJSON的作用