水一道入门分块qwq

题面:传送门

开方基本暴力。。

如果某一个区间全部都开成1或0就打上标记全部跳过就行了

因为一个数开上个四五六次就是1了所以复杂度能过233~

code:

//By Menteur_Hxy
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std; int rd() {
int x=0,fla=1; char c=' ';
while(c>'9'|| c<'0') {if(c=='-') fla=-fla; c=getchar();}
while(c<='9'&&c>='0') x=x*10+c-'0',c=getchar();
return x*fla;
} const int MAX=50010;
const int INF=0x3f3f3f3f;
int n,blo;
int v[MAX],fla[MAX],sum[MAX],bl[MAX]; void sqr(int x) {
if(fla[x]) return ;
fla[x]=1;sum[x]=0;
for(int i=(x-1)*blo+1;i<=x*blo;i++) {
v[i]=sqrt(v[i]),sum[x]+=v[i];
if(v[i]>1) fla[x]=0;
}
} void add(int a,int b,int c) {
for(int i=a;i<=min(bl[a]*blo,b);i++) {
sum[bl[a]]-=v[i];
v[i]=sqrt(v[i]);
sum[bl[a]]+=v[i];
}
if(bl[a]!=bl[b])
for(int i=(bl[b]-1)*blo+1;i<=b;i++) {
sum[bl[b]]-=v[i];
v[i]=sqrt(v[i]);
sum[bl[b]]+=v[i];
}
for(int i=bl[a]+1;i<=bl[b]-1;i++) sqr(i);
} int query(int a,int b) {
int ans=0;
for(int i=a;i<=min(bl[a]*blo,b);i++) ans+=v[i];
if(bl[a]!=bl[b])
for(int i=(bl[b]-1)*blo+1;i<=b;i++) ans+=v[i];
for(int i=bl[a]+1;i<=bl[b]-1;i++) ans+=sum[i];
return ans;
} int main() {
n=rd(); blo=sqrt(n);
for(int i=1;i<=n;i++) scanf("%d",&v[i]);
for(int i=1;i<=n;i++) {
bl[i]=(i-1)/blo+1;
sum[bl[i]]+=v[i];
}
for(int i=1;i<=n;i++) {
int opt=rd(),a=rd(),b=rd(),c=rd();
if(opt) printf("%d\n",query(a,b));
else add(a,b,c);
}
return 0;
}

最新文章

  1. [转]iOS学习笔记(2)--Xcode6.1创建仅xib文件无storyboard的hello world应用
  2. PHP学习心得(1)——实用脚本
  3. linux下一些可用库
  4. &amp;与&amp;&amp;的区别
  5. finder怎么才能找到library
  6. java.net.ConnectException: Connection refused: connect
  7. Jewelry Exhibition(最小点覆盖集)
  8. Codeforces 443 B Kolya and Tandem Repeat【暴力】
  9. 拆开Ceph看队列和线程
  10. iOS开发之计算文字尺寸
  11. Spring Boot 中如何使用 Dubbo Activate 扩展点
  12. 导出EXCEL遇到问题
  13. Burp_用户名密码爆破
  14. LINUX内核PCI扫描过程
  15. 洗礼灵魂,修炼python(63)--爬虫篇—re模块/正则表达式(1)
  16. Vue——轻松实现vue底部点击加载更多
  17. 每天一个linux命令-ls命令
  18. 用Fiddler可以设置浏览器的UA 和 手动 --Chrome模拟手机浏览器(iOS/Android)的三种方法,亲测无误!
  19. keras中调用tensorboard:from keras.callbacks import TensorBoard
  20. Speeding up Homestead on Windows Using NFS

热门文章

  1. Javascript 基础夯实 —— 使用 webWorker 实现多线程(转)
  2. 基于ffmpeg和libvlc的视频剪辑、播放器
  3. vmstat命令的输出
  4. Java中最小的整数为什么是-2147483648
  5. oracle 数据库开发面试题
  6. logo切图大小相应的尺寸
  7. Android动态部署五:怎样从插件apk中启动Service
  8. java.util.ComparableTimSort中的sort()方法简单分析
  9. luogu1445 [violet]樱花 阶乘分解
  10. 0x51 线性DP