/*
区间修改 区间查询 可以用线段树搞
但是一般的标记下放对这个题好像不合适
只能改叶子 然后更新父亲(虽然跑的有点慢)
小优化:如果某个点是1 就不用再开方了
所以搞一个f[i]标记 i 这个点还需不需要处理下去
注意用longlong 还有就是数组开大
*/
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#define LL long long
#define maxn 500010
using namespace std;
LL n,m,num,x,y,z;
LL a[maxn],f[maxn];
struct node
{
LL o;
LL l,r;
LL lc,rc;
LL sum;
}t[maxn*];
LL init()
{
LL x=;
char s;
bool f=;
s=getchar();
while(s<''||s>'')
{
if(s=='-')f=;
s=getchar();
}
while(s>=''&&s<='')
{
x=x*+s-'';
s=getchar();
}
if(f==)return x;
else return -x;
}
void Build(LL ll,LL rr)
{
LL k=++num;
t[k].o=k;
t[k].l=ll;t[k].r=rr;
if(ll!=rr-)
{
t[k].lc=num+;
Build(ll,(ll+rr)/);
t[k].rc=num+;
Build((ll+rr)/,rr);
t[k].sum=t[t[k].lc].sum+t[t[k].rc].sum;
}
else t[k].sum=a[ll];
}
void update(LL k,LL ll,LL rr)
{
if(f[k])return;//如果是1 说明儿子(如果有的话)要么是1 要么是0 不需要处理 直接返回
if(ll==rr-)
{
t[k].sum=sqrt(t[k].sum);
if(t[k].sum==)f[k]=;
return;
}
LL mid=(ll+rr)/;
if(y<mid)update(t[k].lc,ll,(ll+rr)/);
if(z>=mid)update(t[k].rc,(ll+rr)/,rr);
t[k].sum=t[t[k].lc].sum+t[t[k].rc].sum;
f[k]=f[t[k].lc]&&f[t[k].rc];//如果左右儿子都是1 那么父亲点也不用更新了.
}
LL find(LL k,LL ll,LL rr)
{
if(ll<=t[k].l&&rr>=t[k].r)return t[k].sum;
LL ans=;
if(ll<(t[k].l+t[k].r)/)ans+=find(t[k].lc,ll,rr);
if(rr>(t[k].l+t[k].r)/)ans+=find(t[k].rc,ll,rr);
t[k].sum=t[t[k].lc].sum+t[t[k].rc].sum;
return ans;
}
int main()
{
n=init();
for(int i=;i<=n;i++)
a[i]=init();
Build(,n+);
m=init();
for(LL i=;i<=m;i++)
{
x=init();
y=init();
z=init();
if(y>z)swap(y,z);
if(x==)update(,,n+);
if(x==)printf("%lld\n",find(,y,z+));
}
}

codevs2492上帝造题的七分钟 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. luogu4145 上帝造题的七分钟2 (线段树)

    题意:给一个数列,维护两个操作,区间开根号.询问区间和 注意到1e12开根号六次后就变成1,而且根号1等于1 也就是说,就算我们用单点修改,只要跳过1,那么修改的次数最多也就是6n 那么维护一个区间最 ...

  7. 【BZOJ3038】上帝造题的七分钟2 线段树

    根据一个数六次√必死,我们可以打标记死了就不管他了,于是有贡献的操作复杂度为O(n*logn*6),然而我们还有由于盲目修改造成的多余代价我们把每次查询的区间分成三部分前全死,中残,后全死,对于中残, ...

  8. tyvj P1716 - 上帝造题的七分钟 二维树状数组区间查询及修改 二维线段树

    P1716 - 上帝造题的七分钟 From Riatre    Normal (OI)总时限:50s    内存限制:128MB    代码长度限制:64KB 背景 Background 裸体就意味着 ...

  9. codevs2492 上帝造题的七分钟 2

    2492 上帝造题的七分钟 2 题目描述 Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说,要有数列,于是便给定了一个正整数数列 ...

  10. P4514 上帝造题的七分钟——二维树状数组

    P4514 上帝造题的七分钟 求的是矩阵里所有数的和: 维护四个树状数组: #include<cstdio> #include<cstring> #include<alg ...

随机推荐

  1. python路径相关

    import sys import os sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 将当 ...

  2. NLP相关资源

    一 NLP相关资源站点 Rouchester大学NLP/CL会议列表 一个非常好的会议时间信息网站,将自然语言处理和计算语言学领域的会议,按照时间月份顺序列出. NLPerJP 一个日本友好人士维护的 ...

  3. SVN版本回滚~

    如果你在svn上对文件进行编辑作了修改,想撤销,那么有两种方法可以还原:1) svn revert <yourfile>2) 手动删除该文件,重新执行svn up(rm <yourf ...

  4. iPad和iPhone开发的比较

    一.iPad简介 1.什么是iPad 一款苹果公司于2010年发布的平板电脑 定位介于苹果的智能手机iPhone和笔记本电脑产品之间 跟iPhone一样,搭载的是iOS操作系统 2.iPad的市场情况 ...

  5. iOS类别(Category)与扩展(Extension)-b

    苹果的官方文档 Category在iOS开发中使用非常频繁.尤其是在为系统类进行拓展的时候,我们可以不用继承系统类,直接给系统类添加方法,最大程度的体现了Objective-C的动态语言特性. #im ...

  6. BZOJ 1043 下落的圆盘

    Description 有n个圆盘从天而降,后面落下的可以盖住前面的.求最后形成的封闭区域的周长.看下面这副图, 所有的红色线条的总长度即为所求.  Input n ri xi y1 ... rn x ...

  7. QVariant(相当于是Java里面的Object,起到一个数据类型“擦除”的作用,可以使用Q_DECLARE_METATYPE进行注册)

    =QVariant= [%这个类型相当于是Java里面的Object,它把绝大多数Qt提供的数据类型都封装起来,起到一个数据类型“擦除”的作用.比如我们的 table单元格可以是string,也可以是 ...

  8. WordPress BulletProof Security插件多个HTML注入漏洞

    漏洞名称: WordPress BulletProof Security插件多个HTML注入漏洞 CNNVD编号: CNNVD-201308-023 发布时间: 2013-08-06 更新时间: 20 ...

  9. 数据结构(RMQ):POJ 3624 Balanced Lineup

    Balanced Lineup   Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always li ...

  10. Agri-Net(prim算法,最小生成树问题)

    看图便知道: 来来上代码:         #include <cstdio>#include <cstdlib>#include <cstring>#includ ...