#include<stdio.h>

#include<string.h>

#define N 100000

struct st{

 int x,y;

 __int64 yanchi,sum;

}a[N*4];

__int64 b[N];

void build(int t,int x,int y) {

 a[t].x=x;

 a[t].y=y;

 a[t].yanchi=0;

 if(x==y) {

  a[t].sum=b[x];

  return ;

 }

 int temp=t*2;

 int mid=(a[t].x+a[t].y)/2;

 build(temp,x,mid);

 build(temp+1,mid+1,y);

 a[t].sum=a[temp].sum+a[temp+1].sum;

 return ;

}

void change(int t,int x,int y,int z) {

 if(a[t].x==x&&a[t].y==y) {

  a[t].yanchi+=z;

  return ;

 }

 a[t].sum+=(y-x+1)*z;

 int temp=t*2;

 int mid=(a[t].x+a[t].y)/2;

 if(y<=mid)

  change(temp,x,y,z);

 else

  if(x>mid)

   change(temp+1,x,y,z);

  else {

   change(temp,x,mid,z);

   change(temp+1,mid+1,y,z);

  }

  return ;

}

__int64 qury(int t,int x,int y) {

 if(a[t].x==x&&a[t].y==y)

  return a[t].sum+(y-x+1)*a[t].yanchi;

   int temp=t<<1;

   int mid=(a[t].y+a[t].x)/2;

   a[temp+1].yanchi+=a[t].yanchi;

   a[temp].yanchi+=a[t].yanchi;

   a[t].sum+=a[t].yanchi*(a[t].y-a[t].x+1);

   a[t].yanchi=0;

   if(y<=mid)

    return qury(temp,x,y);

   else

    if(x>mid)

     return qury(temp+1,x,y);

    else

     return qury(temp,x,mid)+qury(temp+1,mid+1,y);

}

int main() {

 int i,j,k,n,m;

 char s[100];

 while(scanf("%d%d",&n,&m)!=EOF) {

  for(i=1;i<=n;i++)

   scanf("%I64d",&b[i]);

  build(1,1,n);

  while(m--) {

   scanf("%s",s);

   if(s[0]=='Q') {

    scanf("%d%d",&i,&j);

    printf("%I64d\n",qury(1,i,j));

   }

   else {

    scanf("%d%d%d",&i,&j,&k);

    change(1,i,j,k);

   }

}

 }

 return 0;

}

poj3468区间延迟更新模板题的更多相关文章

  1. hdu 1556 线段树区间延迟更新好题

    656mS #include<stdio.h> #include<stdlib.h> #define N 110000 struct node { int x,y,yanchi ...

  2. FZU Problem 2171 防守阵地 II (线段树区间更新模板题)

    http://acm.fzu.edu.cn/problem.php?pid=2171 成段增减,区间求和.add累加更新的次数. #include <iostream> #include ...

  3. HDU1698:Just a Hook(线段树区域更新模板题)

    http://acm.hdu.edu.cn/showproblem.php?pid=1698 Problem Description In the game of DotA, Pudge’s meat ...

  4. hdu 1698区间延迟更新

    #include<stdio.h> #define N 100100 struct node { int x,y,yanchi; }a[N*4];//注意数组范围 void build(i ...

  5. zoj 1610 Count the Colors(线段树延迟更新)

    所谓的懒操作模板题. 学好acm,英语很重要.做题的时候看不明白题目的意思,我还拉着队友一块儿帮忙分析题意.最后确定了是线段树延迟更新果题.我就欣欣然上手敲了出来. 然后是漫长的段错误.... 第一次 ...

  6. (线段树 区间合并更新)Tunnel Warfare --hdu --1540

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1540 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  7. POJ - 3264 线段树模板题 询问区间最大最小值

    这是线段树的一个模板题,给出一串数字,然后询问区间的最大最小值. 这个其实很好办,只需把线段树的节点给出两个权值,一个是区间的最小值,一个是区间的最大值,初始化为负无穷和正无穷,然后通过不断地输入节点 ...

  8. hdu1698 Just a Hook 【区间修改】(模板题)

    题目链接:https://vjudge.net/contest/182746#problem/E 题目大意: 一段线段由n条小线段组成,每次操作把一个区间的小线段变成金银铜之一(金的价值为3,银为2, ...

  9. POJ 3468:A Simple Problem with Integers(线段树区间更新模板)

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

随机推荐

  1. jmeter配置mysql数据库步骤

    安装环境: Windows10系统 jmeter版本:3.0版本 java1.8版本 安装步骤: 1.下载连接mysql数据库jar包,地址:http://download.csdn.net/deta ...

  2. AJPFX总结string类和简单问题

    String表示字符串,所谓字符串,就是一连串的字符;String是不可变类,一旦String对象被创建,包含在对象中的字符序列(内容)是不可变的,直到对象被销毁://一个String对象的内容不能变 ...

  3. new操作符具体干了什么

    function Func(){ }; var newFunc=new Func (); new共经过了4个阶段 1.创建一个空对象 var obj=new Object(); 2.设置原型链 把 o ...

  4. JavaScript中,有三种常用的绑定事件的方法

    要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数.所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称. 在JavaScript中,有三种常用的 ...

  5. 公有云大脑——核心IDC简影

    出差刚到家,公司最近接了一个矿场转建公有云平台的项目. 前期200台服务器作为公有云基础. 我主要负责总体网络规划.计费数据库集群设计.ceph集群自动部署.容器化设计.硬件及系统调试优化等等! 由于 ...

  6. layout转Bitmap

    业务需求详细描述:最近产品说要在分享的商品图中添加一些其他图片和文字,然后拼接为一张图片,再分享到微信朋友圈,于是我就一脸懵逼了,但是没办法还是得做额! 然后整理了一下思路,主要有这么两条路线: 自己 ...

  7. Android获取本地相册图片、拍照获取图片

    需求:从本地相册找图片,或通过调用系统相机拍照得到图片. 容易出错的地方: 1,当我们指定了照片的uri路径,我们就不能通过data.getData();来获取uri,而应该直接拿到uri(用全局变量 ...

  8. HDU 5391 Zball in Tina Town (打表,水)

    题意: Tina有一个球,它的名字叫zball.zball很神奇,它会每天变大.在第一天的时候,它会变大1倍.在第二天的时候,它会变大2倍.在第n天的时候,它会变大n倍.zball原来的体积是1.Ti ...

  9. Android系统级技巧合集

    Android系统级技巧合集(随时更新) #转载请注明来源# 1.高通骁龙系列查看CPU体质等级 CPU体质,即为CPU在工作频率下的电压.同一批次的CPU体质各有不同,体质越高,代表该颗CPU可在更 ...

  10. Unity Shader-热空气扭曲效果

    GrabPass GrabPass是Unity为我们提供的一个很方便的功能,可以直接将当前屏幕内容渲染到一张贴图上,我们可以直接在shader中使用这张贴图而不用自己去实现渲染到贴图这样的一个过程,大 ...