#include<cstdio>
#include<algorithm>
#include<cstring>
typedef long long ll;
#define N 100010
using namespace std;
struct node
{
ll l,r,lz,sum;
}t[*N];
ll read()
{
ll ret=,neg=;
char j=getchar();
for (;j>'' || j<'';j=getchar())
if (j=='-') neg=-;
for (;j<='' && j>='';j=getchar())
ret=ret*+j-'';
return ret*neg;
}
ll n,q,a[N],l,r,k;
void pushup(ll p)
{
t[p].sum=t[*p].sum+t[*p+].sum;
}
void pushdown(ll p)
{
if (t[p].l==t[p].r || t[p].lz==) return;
ll tmp=t[p].lz,mid=(t[p].r+t[p].l)>>;
t[*p].sum+=(mid-t[p].l+)*tmp;
t[*p+].sum+=(t[p].r-mid)*tmp;
t[*p].lz+=tmp;
t[*p+].lz+=tmp;
t[p].lz=;
}
void build(ll p,ll l,ll r)
{
t[p].l=l,t[p].r=r;
if (l!=r)
{
ll mid=l+r>>;
build(*p,l,mid);
build(*p+,mid+,r);
pushup(p);
}
else
t[p].sum=a[l];
}
void modify(ll p,ll l,ll r,ll k)
{
ll L=t[p].l,R=t[p].r,mid=(L+R)>>;
if (l==L && r==R)
{
t[p].sum+=(r-l+)*k;
t[p].lz+=k;
return ;
}
pushdown(p);
if (r<=mid)
modify(*p,l,r,k);
else if (l>mid)
modify(*p+,l,r,k);
else modify(*p,l,mid,k),modify(*p+,mid+,r,k);
pushup(p);
}
ll query(ll p,ll l,ll r)
{
ll L=t[p].l,R=t[p].r,mid=(L+R)>>;
if (l==L && r==R)
return t[p].sum;
pushdown(p);
if (r<=mid)
return query(*p,l,r);
if (l>mid) return query(*p+,l,r);
return query(*p,l,mid)+query(*p+,mid+,r);
}
char op[N];
int main()
{
n=read(),q=read();
for (int i=;i<=n;i++)
a[i]=read();
build(,,n);
while (q--)
{
scanf("%s",op);
if (op[]=='Q')
l=read(),r=read(),printf("%lld\n",query(,l,r));
else l=read(),r=read(),k=read(),modify(,l,r,k);
}
return ;
}

POJ A Simple Problem with Integers | 线段树基础练习的更多相关文章

  1. Poj 3468-A Simple Problem with Integers 线段树,树状数组

    题目:http://poj.org/problem?id=3468   A Simple Problem with Integers Time Limit: 5000MS   Memory Limit ...

  2. POJ A Simple Problem with Integers 线段树 lazy-target 区间跟新

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

  3. POJ 3468A Simple Problem with Integers(线段树区间更新)

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

  4. 2018 ACMICPC上海大都会赛重现赛 H - A Simple Problem with Integers (线段树,循环节)

    2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 H - A Simple Problem with Integers (线段树,循环节) 链接:https://ac.nowcoder.co ...

  5. poj 3468 A Simple Problem with Integers 线段树第一次 + 讲解

    A Simple Problem with Integers Description You have N integers, A1, A2, ... , AN. You need to deal w ...

  6. [POJ] 3468 A Simple Problem with Integers [线段树区间更新求和]

    A Simple Problem with Integers   Description You have N integers, A1, A2, ... , AN. You need to deal ...

  7. poj 3468 A Simple Problem with Integers 线段树区间加,区间查询和

    A Simple Problem with Integers Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://poj.org/problem?i ...

  8. poj 3468 A Simple Problem with Integers 线段树区间加,区间查询和(模板)

    A Simple Problem with Integers Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://poj.org/problem?i ...

  9. poj 3468 A Simple Problem with Integers (线段树区间更新求和lazy思想)

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

随机推荐

  1. 在网页标题上加个logo

    只需在title标签上加个link标签即可 <link rel="icon" href="images/icon.png" > <title& ...

  2. Linux 个人服务搭建脱坑实录

    环境:VMware.Centos7 64位.jdk1.7.Tomcat 7 说明:本是个人的爬坑经历所总结出来的,记录一下心得.也给有需要的人提供一些帮助.引用了一些大神的笔记,非常感谢,希望大神们不 ...

  3. Element-ui组件--pagination分页

    一般写后台系统都会有很多的列表,有列表就相应的要用到分页,根据项目中写的几个分页写一下我对分页的理解,就当是学习笔记了. 这是Element-ui提供的完整的例子 <template>  ...

  4. 汉罗塔问题——Python

    汉罗塔问题就是一个循环的过程:* (有两种情况) 如果被移动盘只有一个盘子,可以直接移动到目的盘 但是被移动盘有多个盘子,就先需要将上面的n-1个盘子通过目的盘移动到辅助盘,然后将被移动盘最下面一个盘 ...

  5. C# 创建新线程

    首先需要包含命名空间 using System.Threading; 然后创建进程 Thread th = new Thread(new ThreadStart(ThreadMethod)); //创 ...

  6. TI C6000 数据存储处理与性能优化

    存储器之于CPU好比仓库之于车间.车间加工过程中的原材料.半成品.成品等均需入出仓库,生产效率再快,如果仓库周转不善,也必然造成生产阻塞.如同仓库需要合理地规划管理一般,数据存储也需要恰当的处理技巧来 ...

  7. python Beautiful Soup库入门

    bs4库的HTML内容遍历方法 基于bs4库的HTML格式输出 显示:友好的显示 <tag>.prettify() 编码:bs4库将任何HTML输入都变成utf-8编码(python 3. ...

  8. STM8S PWM输出停止后 IO口电平输出

    STM8S有许多定时器支持PWM输出,但在停止定时器后,IO口电平到底是多少呢?或高或低. 因此,为了确定PWM停止输出电平后其对应的值是多少,我们在停止PWM输出时需要对CCMR1寄存器进行设置. ...

  9. html+css调用服务器端字体

    在浏览网页时,由于客户端没有安装某些特殊字体,导致网页文字无法按设计正常显示,这时我们可以使用服务器字体来避免这种现象的发送 语法 @font-face { /* 自定义字体名称 */ font-fa ...

  10. SpringMVC---其它常用注解

    常用注解 PathVariable @RequestMapping注解中使用占位符的情况下,需要使用@PathVariable注解指定占位符参数.即指定占位符中的值与方法中哪一个参数进行匹配.如果方法 ...