#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
typedef long long ll;
const ll maxn=1e5+;
ll ary[maxn];
struct node
{
ll l,r,val;
ll add;
}tree[maxn<<];
void pushup(ll cur)
{
tree[cur].val=tree[cur<<].val+tree[cur<<|].val;
}
void down(ll cur,ll len)
{
if(tree[cur].add){
tree[cur<<].val+=(len-(len>>))*tree[cur].add;
tree[cur<<|].val+=(len>>)*tree[cur].add;
tree[cur<<].add+=tree[cur].add;
tree[cur<<|].add+=tree[cur].add;
tree[cur].add=;
}
}
void build(ll l,ll r,ll cur)
{
tree[cur].l=l,tree[cur].r=r;
tree[cur].val=tree[cur].add=;
if(l==r){
tree[cur].val=ary[l];
return;
}
ll mid=(l+r)/;
build(l,mid,cur<<);
build(mid+,r,cur<<|);
pushup(cur);
}
ll query(ll l,ll r,ll cur)
{
ll L=tree[cur].l,R=tree[cur].r;
if(l<=L&&r>=R) return tree[cur].val;
down(cur,R-L+);
ll mid=(L+R)/;
ll ans=;
if(l<=mid) ans+=query(l,r,cur<<);
if(r>mid) ans+=query(l,r,cur<<|);
return ans;
}
void update(ll l,ll r,ll key,ll cur)
{
ll L=tree[cur].l,R=tree[cur].r;
if(l<=L&&r>=R){
tree[cur].val+=(R-L+)*key;
tree[cur].add+=key;
return;
}
down(cur,R-L+);
ll mid=(L+R)/;
if(l<=mid) update(l,r,key,cur<<);
if(r>mid) update(l,r,key,cur<<|);
pushup(cur);
}
int main()
{
ll n,m;
scanf("%lld%lld",&n,&m);
for(ll i=;i<=n;i++)
scanf("%lld",&ary[i]);
build(,n,);
while(m--){
char tmp;
cin>>tmp;
if(tmp=='Q'){
ll l,r;
scanf("%lld%lld",&l,&r);
ll ans=query(l,r,);
printf("%lld\n",ans);
}
else{
ll l,r,key;
scanf("%lld%lld%lld",&l,&r,&key);
update(l,r,key,);
}
}
return ;
}

线段树 区间查询区间修改 poj 3468的更多相关文章

  1. HZAU 1207 Candies(线段树区间查询 区间修改)

    [题目链接]http://acm.hzau.edu.cn/problem.php?id=1207 [题意]给你一个字符串,然后两种操作:1,将区间L,R更新为A或者B,2,询问区间L,R最长的连续的B ...

  2. poj 3468:A Simple Problem with Integers(线段树,区间修改求和)

    A Simple Problem with Integers Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 58269   ...

  3. hiho一下20周 线段树的区间修改

    线段树的区间修改 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 对于小Ho表现出的对线段树的理解,小Hi表示挺满意的,但是满意就够了么?于是小Hi将问题改了改,又出给了 ...

  4. hihoCode 1078 : 线段树的区间修改

    #1078 : 线段树的区间修改 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 对于小Ho表现出的对线段树的理解,小Hi表示挺满意的,但是满意就够了么?于是小Hi将问题 ...

  5. hihoCoder #1078 : 线段树的区间修改(线段树区间更新板子题)

    #1078 : 线段树的区间修改 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 对于小Ho表现出的对线段树的理解,小Hi表示挺满意的,但是满意就够了么?于是小Hi将问题 ...

  6. 培训补坑(day7:线段树的区间修改与运用)(day6是测试,测试题解以后补坑QAQ)

    补坑咯~ 今天围绕的是一个神奇的数据结构:线段树.(感觉叫做区间树也挺科学的.) 线段树,顾名思义就是用来查找一段区间内的最大值,最小值,区间和等等元素. 那么这个线段树有什么优势呢? 比如我们要多次 ...

  7. 线段树(成段更新) POJ 3468 A Simple Problem with Integers

    题目传送门 /* 线段树-成段更新:裸题,成段增减,区间求和 注意:开long long:) */ #include <cstdio> #include <iostream> ...

  8. hiho一下21周 线段树的区间修改 离散化

    离散化 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~ 这天小Hi和小Ho ...

  9. UVa 11992 Fast Matrix Operations (线段树,区间修改)

    题意:给出一个row*col的全0矩阵,有三种操作 1 x1 y1 x2 y2 v:将x1 <= row <= x2, y1 <= col <= y2里面的点全部增加v: 2 ...

随机推荐

  1. Tomcat启动命令行窗口中文乱码

    找到Tomcat安装目录conf/logging.properties文件 添加语句:java.util.logging.ConsoleHandler.encoding = GBK 重启Tomcat

  2. shell脚本执行sql命令

    参考:https://www.cnblogs.com/xingchong/p/11698237.html

  3. C++——指针3

    指针作为函数参量 指针作为函数参量,以地址的方式传递数据,可以用来返回函数处理结果:实参是数组名时形参可以是指针. 题目:读入三个浮点数,将整数部分和小数部分分别输出 #include <ios ...

  4. git merge代码

    把主干合并进分支 git checkout branch git merge origin/master [一开始我使用的是git merge master,提交代码后发现主干和分支还是有差异,如果不 ...

  5. 网易云信融合CDN方案及实践

    日前,网易云信视频云架构师席智勇在第七届GFIC全球家庭互联网大会进行了题为<网易云信融合CDN方案及实践>的分享,以下是演讲内容回顾. 图为 网易云信视频云架构师席智勇 CDN所面临的问 ...

  6. ORA-01476: 除数为 0

    假设是a/bdecode(b,0,null,a/b) 这样如果b为0,输出null,不为0输出a/b decode():将查询结果翻译成其他值,类似三目运算符 比较1个参数时      decode( ...

  7. onvif学习一:wsdl 和soap

    来源:https://www.cnblogs.com/huanghongbo/p/5920123.html WSDL是用来描述WebService的,它用XML的格式描述了WebService有哪些方 ...

  8. [NOI2014] 魔法森林 - Link Cut Tree

    [NOI2014] 魔法森林 Description 给定一张图,每条边 \(i\) 的权为 \((a_i,b_i)\), 求一条 \(1 \sim n\) 路径,最小化 \(\max_{i\in P ...

  9. Weighted Visibility Graph With Complex Network Features in the Detection of Epilepsy

    Their data five data set, 100 single channel of EEG signals, each channel EEG has 4097 data point. t ...

  10. C++-main函数与命令行参数

    1.main函数的概念 C语言中main函数称之为主函数 —个C程序是从main函数开始执行的 下面的main函数定义正确吗? //1 main(){ } //2 void main(){ } //3 ...