1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5. long long a[],sum[],add[],n;
  6. void pushup(long long rt){sum[rt]=sum[rt<<]+sum[rt<<|];}
  7. void build(long long l,long long r,long long rt)
  8. {
  9. if (l==r){sum[rt]=a[l];return;}
  10. long long mid=(l+r)>>;
  11. build(l,mid,rt<<);
  12. build(mid+,r,rt<<|);
  13. pushup(rt);
  14. }
  15. void pushdown(long long rt,long long ln,long long rn)
  16. {
  17. if (add[rt])
  18. {
  19. add[rt<<]+=add[rt];
  20. add[rt<<|]+=add[rt];
  21. sum[rt<<]+=add[rt]*ln;
  22. sum[rt<<|]+=add[rt]*rn;
  23. add[rt]=;
  24. }
  25. }
  26. void updata(long long L,long long R,long long C,long long l,long long r,long long rt)
  27. {
  28. if ((L<=l)&&(r<=R))
  29. {
  30. sum[rt]+=C*(r-l+);
  31. add[rt]+=C; return;
  32. }
  33. long long mid=(l+r)>>;
  34. pushdown(rt,mid-l+,r-mid);
  35. if (L<=mid) updata(L,R,C,l,mid,rt<<);
  36. if (R>mid) updata(L,R,C,mid+,r,rt<<|);
  37. pushup(rt);
  38. }
  39. long long query(long long L,long long R,long long l,long long r,long long rt)
  40. {
  41. if ((L<=l)&&(r<=R)) return sum[rt];
  42. long long mid=(l+r)>>;
  43. pushdown(rt,mid-l+,r-mid);
  44. long long ans=;
  45. if (L<=mid) ans+=query(L,R,l,mid,rt<<);
  46. if (R>mid) ans+=query(L,R,mid+,r,rt<<|);
  47. return ans;
  48. }
  49. int main()
  50. {
  51. scanf("%lld",&n);
  52. long long i,j,q,t,l,r,x;
  53. for (i=;i<=n;++i) scanf("%lld",&a[i]);
  54. build(,n,);
  55. scanf("%lld",&q);
  56. for (i=;i<=q;++i)
  57. {
  58. scanf("%lld",&t);
  59. if (t==)
  60. {
  61. scanf("%lld%lld%lld",&l,&r,&x);
  62. updata(l,r,x,,n,);
  63. }
  64. else
  65. {
  66. scanf("%lld%lld",&l,&r);
  67. printf("%lld\n",query(l,r,,n,));
  68. }
  69. }
  70. return ;
  71. }

codevs 1082 线段树练习3 模板题的更多相关文章

  1. codevs 1082 线段树练习 3(区间维护)

    codevs 1082 线段树练习 3  时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...

  2. codevs 1082 线段树区间求和

    codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...

  3. codevs 1082 线段树练习3

    1082 线段树练习 3  时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master 题解       题目描述 Description 给你N个数,有两种操作: 1: ...

  4. Codevs 1082 线段树练习 3

    1082 线段树练习 3 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Maste 传送门 题目描述 Description 给你N个数,有两种操作: 1:给区间[a,b]的 ...

  5. 【BZOJ 3196】二逼平衡树 线段树套splay 模板题

    我写的是线段树套splay,网上很多人写的都是套treap,然而本蒟蒻并不会treap 奉上sth神犇的模板: //bzoj3196 二逼平衡树,支持修改某个点的值,查询区间第k小值,查询区间某个值排 ...

  6. codevs 1082 线段树练习3 (线段树)

    题目: 题目描述 Description 给你N个数,有两种操作: 1:给区间[a,b]的所有数增加X 2:询问区间[a,b]的数的和. 输入描述 Input Description 第一行一个正整数 ...

  7. 【树状数组区间修改区间求和】codevs 1082 线段树练习 3

    http://codevs.cn/problem/1082/ [AC] #include<bits/stdc++.h> using namespace std; typedef long ...

  8. codevs 1082 线段树练习 3 --分块练习

    时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区间[a,b]的所有数增加X 2:询问区间[ ...

  9. codevs 1082 线段树练习 3 区间更新+延迟标记

    题目描述 Description 给你N个数,有两种操作: 1:给区间[a,b]的所有数增加X 2:询问区间[a,b]的数的和. 输入描述 Input Description 第一行一个正整数n,接下 ...

随机推荐

  1. Office文件上传自动生成缩略图

    来源:微信公众号CodeL 前不久产品经理提出一个X的需求,说上传office文件的时候需要将首页自动截图,用于显示文件列表的时候将文件第一页缩略图展示给用户.实现的方式有多种,这里给大家介绍一个简单 ...

  2. 有限状态机HDL模板

    逻辑设计, 顾名思义, 只要理清了逻辑和时序, 剩下的设计只是做填空题而已. 下面给出了有限状态机的标准设计,分别为 VHDL 和 Verilog 代码 1  有限状态机 2  VHDL模板之一 li ...

  3. Rem实现自适应初体验

    第一次做移动端的页面,遇到的第一个问题就是移动端的轮播图.其实轮播图的插件有很多,但是完全满足需求的并不容易找. 需求: 1.实现基本的触屏轮播图效果 2.传入非标准比例的图片,可以自动平铺(有时候图 ...

  4. poj1459 Power Network (多源多汇最大流)

    Description A power network consists of nodes (power stations, consumers and dispatchers) connected ...

  5. android studio没有org.apache.http.client.HttpClient;等包问题 解决方案

    以前用Eclipse做Android开发工具一直使用apache的http做网络请求,最近换用了Android studio发现没有办法引用apache的包,下面是我引用的步骤

  6. Windows远程桌面连接Ubuntu 14.04

    由于xrdp.gnome和unity之间的兼容性问题,在Ubuntu 14.04版本中仍然无法使用xrdp登陆gnome或unity的远程桌面,现象是登录后只有黑白点为背景,无图标也无法操作.与13. ...

  7. 继承进一步使用,以及super关键字

    目标: 1)掌握子类对象实例化过程 2)掌握方法覆盖概念和实现. 3)掌握super关键字的作用. 一,子类对象实例化过程 子类对象在实例化之前,必须先调用父类中的构造方法,再调用子类中的构造方法. ...

  8. tp2.2.2新特点

    1.不需要在配置文件中配置URL_MODEL变量就可以用普通模式和路径模式及兼容模式访问URL,但重写模式不可以. 2.当访问的URL地址没有指明具体动作(控制器里的方法)的时候,如果该控制器对应的视 ...

  9. win7系统电脑连接小米蓝牙音箱

    一.买好蓝牙适配器,插到电脑上. 二.右下角工具栏找到蓝牙图标 三.右键这个图标,选择'显示Bluetooth设备' 四.找到小米蓝牙音箱 'NDZ-030-AA' 五.双击打开它,然后选择'服务'选 ...

  10. 2703 奶牛代理商 XII

    2703 奶牛代理商 XII  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 小徐从美国回来后,成为了USAC ...