codevs2492上帝造题的七分钟 2(线段树)
/*
区间修改 区间查询 可以用线段树搞
但是一般的标记下放对这个题好像不合适
只能改叶子 然后更新父亲(虽然跑的有点慢)
小优化:如果某个点是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(线段树)的更多相关文章
- BZOJ_3038_上帝造题的七分钟2_线段树
BZOJ_3038_上帝造题的七分钟2_线段树 题意: XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分 ...
- Bzoj3038 上帝造题的七分钟2 线段树
Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 1135 Solved: 509 Description XLk觉得<上帝造题的七分钟>不太 ...
- B3038 上帝造题的七分钟2 线段树
这就是一道变得比较奇怪的线段树,维护每个区间的最大值和区间和,然后关键在于每次取根号的话数值下降的特别快,不用几次就都是1了,所以每次暴力单点修改,然后直接找区间最大值,假如区间最大值是1的话,就直接 ...
- Codevs 2492 上帝造题的七分钟 2(线段树)
时间限制: 1 s 空间限制: 64000 KB 题目等级 : 大师 Master 题目描述 Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. " ...
- bzoj 3038: 上帝造题的七分钟2 线段树||hdu 4027
3038: 上帝造题的七分钟2 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 1066 Solved: 476[Submit][Status][Dis ...
- luogu4145 上帝造题的七分钟2 (线段树)
题意:给一个数列,维护两个操作,区间开根号.询问区间和 注意到1e12开根号六次后就变成1,而且根号1等于1 也就是说,就算我们用单点修改,只要跳过1,那么修改的次数最多也就是6n 那么维护一个区间最 ...
- 【BZOJ3038】上帝造题的七分钟2 线段树
根据一个数六次√必死,我们可以打标记死了就不管他了,于是有贡献的操作复杂度为O(n*logn*6),然而我们还有由于盲目修改造成的多余代价我们把每次查询的区间分成三部分前全死,中残,后全死,对于中残, ...
- tyvj P1716 - 上帝造题的七分钟 二维树状数组区间查询及修改 二维线段树
P1716 - 上帝造题的七分钟 From Riatre Normal (OI)总时限:50s 内存限制:128MB 代码长度限制:64KB 背景 Background 裸体就意味着 ...
- codevs2492 上帝造题的七分钟 2
2492 上帝造题的七分钟 2 题目描述 Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说,要有数列,于是便给定了一个正整数数列 ...
- P4514 上帝造题的七分钟——二维树状数组
P4514 上帝造题的七分钟 求的是矩阵里所有数的和: 维护四个树状数组: #include<cstdio> #include<cstring> #include<alg ...
随机推荐
- 3.1决策树理论--python深度机器学习
参考彭亮老师的视频教程:转载请注明出处及彭亮老师原创 视频教程: http://pan.baidu.com/s/1kVNe5EJ 0. 机器学习中分类和预测算法的评估: 准确率 速度 强壮行 ...
- Tornado的一个开源社区
https://link.zhihu.com/?target=http%3A//www.tornadoweb.org/en/stable/ 基于Tornado的一个开源社区 GitHub - shiy ...
- 剖析并利用Visual Studio Code在Mac上编译、调试c#程序【转】
0x00 前言 一周多以前的微软的Build大会上,微软发布了一个让很多人眼前一亮的工具,也是本文的主角——Visual Studio Code.很多使用Windows的朋友都很高兴,认为又多了一个很 ...
- 不管,干一个HAPROXY先
说不定要用到的塞.... 1.wget http://www.haproxy.org/download/1.5/src/haproxy-1.5.12.tar.gz 2.tar -zxvf haprox ...
- 几个国外FMX网站 good
FireMonkey X – Amazing overview of FireMonkey FMX Feeds – All your FireMonkey news in one place FMX ...
- 15.禁用ViewState
默认情况下ASP.net是启用ViewState的,这样在页面中会生成冗长的隐藏字段,ViewState对于需要PostBack处理的页面才可能有用,对于不需要交互的页面则完全没有必要用ViewSta ...
- 「Poetize3」Heaven Cow与God Bull
描述 Description 给定一个整数n,求一个整数m,满足m<=n,并且m/phi(m)的值最大.注:phi(m)代表m的欧拉函数,即不大于m且与m互质的数的个数. 题解:m/phi(m) ...
- (转载)PHP源代码分析- tick(s)
(转载)http://bbs.phpchina.com/forum.php?mod=viewthread&tid=94534 昨天有位朋友在杭州的PHPer群里面贴出了下面的一段代码并给出了运 ...
- osg
智能指针使用: osg::Geode* geode=new osg::Geode;//新建Geode指针 osg::ref_ptr<osg::Geode>geodePtr=geode;// ...
- 第k大值01背包问题
http://acm.hdu.edu.cn/showproblem.php?pid=2639 /* 第一行输入t 代表t组测试数据 第二行 输入物品个数 背包容量 要求的第k大值 物品的价值 物品的重 ...