题意:

n个数,m个操作。

1,L,R  询问[L , R] 的总和。

2,L,R  将区间所有数都开根号。

思路:

区间和简单。

主要就是一个 区间所有元素相同的标记Same ,但是这样是不是要求太高?

sqrt 好像就算是1e9,也down的非常快到1了,且这里还没有区间加。

so,只要考虑标记区间是否都是1/0就足够了。

水题。

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e5+10; struct Seg{
int Left,Right;
int Flag;
LL Sum;
}q[N*4]; void Build(int num,int Left,int Right){
q[num].Left=Left;q[num].Right=Right;
if(Left == Right){
scanf("%lld",&q[num].Sum);
if(q[num].Sum==0 || q[num].Sum==1)
q[num].Flag=1;
return;
}
int Mid=(Left+Right)>>1;
Build(num<<1,Left,Mid);
Build(num<<1|1,Mid+1,Right);
q[num].Sum=q[num<<1].Sum+q[num<<1|1].Sum;
q[num].Flag=q[num<<1].Flag&q[2*num|1].Flag;
} void Update(int num,int Left,int Right)
{
if(q[num].Flag) return;
if(q[num].Left==q[num].Right)
{
q[num].Sum=sqrt(q[num].Sum);
if(q[num].Sum==0||q[num].Sum==1) q[num].Flag=1;
return;
}
int Mid=(q[num].Left+q[num].Right)>>1;
if(Mid>=Right) Update(num<<1,Left,Right);
else if(Mid<Left) Update(num<<1|1,Left,Right);
else
{
Update(num<<1,Left,Mid);
Update(num<<1|1,Mid+1,Right);
}
q[num].Sum=q[num<<1].Sum+q[num<<1|1].Sum;
q[num].Flag=q[num<<1].Flag&q[num<<1|1].Flag;
} LL Query(int num,int Left,int Right)
{
if(q[num].Left>=Left && q[num].Right<=Right)
return q[num].Sum;
int Mid=(q[num].Left+q[num].Right)>>1;
if(Mid>=Right) return Query(num<<1,Left,Right);
else if(Mid<Left) return Query(num<<1|1,Left,Right);
else
return Query(num<<1,Left,Mid)+Query(num<<1|1,Mid+1,Right);
} int main()
{
int n,Q;
int op,Left,Right;
scanf("%d",&n);
Build(1,1,n);
scanf("%d",&Q);
while(Q--)
{
scanf("%d%d%d",&op,&Left,&Right);
switch(op){
case 1:printf("%lld\n",Query(1,Left,Right));break;
case 2:Update(1,Left,Right);break;
}
}
return 0;
}

最新文章

  1. 关于JQ toggle 的注意事项
  2. Linux与user和group相关文件分析
  3. 用ADO.NET存入数据库
  4. css3创建动画
  5. HTML&amp;CSS基础学习笔记1.19-DIV标签1
  6. table切换
  7. jquery之效果操作
  8. iOS监听模式系列之IOS中的几中观察监听模式
  9. W3CSchool闯关笔记(初级脚本算法)
  10. 小技巧:改变 VS Code 工作区页面背景
  11. swift 学习- 16 -- 构造过程 02
  12. SSE图像算法优化系列十九:一种局部Gamma校正对比度增强算法及其SSE优化。
  13. Oracle中exists替代in语句
  14. 获取目录文件.bat
  15. linux-程序发布脚本
  16. @log的decorator完美实现(原创)
  17. ny643 发短信 stl库 map函数
  18. SPOJ Count on a tree(主席树+LCA)
  19. 无旋treap的区间操作实现
  20. 计算器软件实现系列(七)WPF+SQL+策略模式

热门文章

  1. KbmMW-及相关
  2. 尴尬,qt出现错误,然后莫名又好了..
  3. Java丨验证码图片去除干扰像素,方便验证码的识别
  4. 1147. Heaps (30)
  5. python 接口测试字符类型转换
  6. 人物-IT-任正非:任正非
  7. arm交叉编译 扫盲贴
  8. ngx通讯之可观察对象实现
  9. Python模块-requests(二)
  10. C# 播放音乐