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 ...
随机推荐
- 《学习OpenCV》 第四章 习题六
实现的是一个图像标签编辑器,其间遇到了些问题还未解决或者可能解决方法上不是最优,若你有更好的思路可以提供给我,大恩不言谢啦!!☆⌒(*^-゜)v. #include "stdafx.h&qu ...
- c# 無彈窗调用打印机
using System; using System.Collections.Generic; using System.Text; using System.Configuration; using ...
- [BC Round#26] Card 【各种水】
题目链接:HDOJ - 5159 这道题的做法太多了..BC的第二题也是可以非常水的.. 算法一 我在比赛的时候写的算法是这样的.. 预处理出所有的答案,然后对于每个询问直接输出. 询问 (a, b) ...
- [POJ 2774] Long Long Message 【后缀数组】
题目链接:POJ - 2774 题目分析 题目要求求出两个字符串的最长公共子串,使用后缀数组求解会十分容易. 将两个字符串用特殊字符隔开再连接到一起,求出后缀数组. 可以看出,最长公共子串就是两个字符 ...
- maven解决.lastUpdated maven无法下载jar
话说,这个问题困扰了我两个多月了已经~~~ 后来发现不知道被谁动了,把我的仓库没有放到仓库组里面~~~ 用admin登录进去,默认密码是admin123,然后看截图操作吧. (记得删除你本地报错说** ...
- Javascript Framework Scenario
Mobile----- zepto, jQuery Scroll------ iscrollhttp://cubiq.org/iscroll-4 jo.js widget----- jquery pl ...
- Java 8 中的 Streams API 详解
为什么需要 Stream Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念.它也不同于 StAX 对 ...
- 1A Theatre Square
题目大意; 有一个广场,广场的大小是n*m, 有a*a的石砖,石砖铺广场可以比广场大,石砖不能切割.问最少需要多少个石砖. ===================================== ...
- 数据结构(主席树,Bit):XTU 1247/COGS 2344. pair-pair
pair-pair 输入文件:pair-pair.in 输出文件:pair-pair.out 简单对比 时间限制:7 s 内存限制:64 MB Time Limit : 7000 MS M ...
- 动态规划(状态压缩):BZOJ 2621 [Usaco2012 Mar]Cows in a Skyscraper
2621: [Usaco2012 Mar]Cows in a Skyscraper Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 303 Sol ...