题目地址:http://codevs.cn/problem/1082/

参考博客:https://blog.csdn.net/zars19

代码:


#include <iostream>
#include <algorithm>
#include <string.h>
#include <ctype.h>
#include <set>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <fstream>
#define  maxn 500005
#define lowbit(x) ((x)&(-x))
typedef long long ll;
using namespace std;
ll n,q,now,op,l,r,v,last=0,c[maxn][2]={0};
void update(ll x,ll v,ll w)
{for(ll i=x;i<=n;i+=lowbit(i))c[i][w]+=v;
}
ll getsum(ll x,ll w)
{ll sum=0;for(ll i=x;i>0;i-=lowbit(i))sum+=c[i][w];return sum;
}
ll getans(ll x)
{return (x+1)*getsum(x,0)-getsum(x,1);
}
int main()
{//freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);scanf("%lld",&n);for(ll i=1;i<=n;i++){scanf("%lld",&now);update(i,now-last,0);//diupdate(i,(now-last)*i,1);//di*ilast=now;}scanf("%lld",&q);while(q--){scanf("%lld",&op);if(op==1){scanf("%lld %lld %lld",&l,&r,&v);update(l,v,0);update(r+1,-v,0);update(l,v*l,1);update(r+1,-v*(r+1),1);}else{scanf("%lld %lld",&l,&r);printf("%lld\n",getans(r)-getans(l-1));}}return 0;
}

【codeVS 1082】树状数组(区间修改,区间查询)模版题相关推荐

  1. 校门外的树——树状数组+区间修改

    校门外的树 [题目分析]题目描述的是一种区间修改,看起来好像要用线段树.但是对于这种区间内部没有差别并且查询的是区间内的类别的问题,是可以转化为树状数组进行的.毕竟树状数组更加简单. 我们的关注点应该 ...

  2. 树状数组区间修改和区间求和

    最一般树状数组能做到的操作是单点修改,区间求和,都是log(n)级别的.原理就是用树状数组维护a[i]的部分和. 想要做到修改区间,求单点值也很简单,用树状数组维护a[i]的差分数组d[i]的部分和既 ...

  3. UESTC 1601 艾尔大停电2 二维树状数组+区间更新

    艾尔大停电2 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit  S ...

  4. 树状数组 区间update/query

    Re [问题引入] 对于区间修改.区间查询这样的简单问题,打一大堆线段树确实是不划算,今天来介绍一下区间查询+区间修改的树状数组 [一些基础] 树状数组的基本知识不再介绍,请自行百度 我们假设sigm ...

  5. hdu3966 树链剖分点权模板+线段树区间更新/树状数组区间更新单点查询

    点权树的模板题,另外发现树状数组也是可以区间更新的.. 注意在对链进行操作时方向不要搞错 线段树版本 #include<bits/stdc++.h> using namespace std ...

  6. hdu 1556:Color the ball(第二类树状数组 —— 区间更新,点求和)

    Color the ball Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  7. HDU 4031 Attack(线段树/树状数组区间更新单点查询+暴力)

    Attack Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) Total Sub ...

  8. 一维数状数组区间修改,查询

    模板题CODEVS-1082 给你N个数,有两种操作: 1:给区间[a,b]的所有数增加X 2:询问区间[a,b]的数的和. 第一行一个正整数n,接下来n行n个整数, 再接下来一个正整数Q,每行表示操 ...

  9. Color the ball(树状数组区间更新+单点求值)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1556 Color the ball Time Limit: 9000/3000 MS (Java/Ot ...

  10. hdu2642二维树状数组单点更新+区间查询

    http://acm.hdu.edu.cn/showproblem.php?pid=2642 题目大意:一个星空,二维的.上面有1000*1000的格点,每个格点上有星星在闪烁.一开始时星星全部暗淡着 ...

最新文章

  1. C++中string查找和取子串和整形转化
  2. Altium designer 操作笔记
  3. 北斗导航 | PPP-RTK技术研究进展与试验验证(第十一届中国卫星导航年会报告)
  4. ABP v1.0正式发布
  5. 【安卓开发 】Android初级开发(四)ListView
  6. float数据在计算机内存中的存储方法
  7. 2021计算机技术调剂,2021年华南师范大学计算机技术考研调剂信息
  8. 3月第一周中国五大顶级域名增6万 美国增1.8万
  9. 第一次大作业总结——四则运算程序
  10. c++ win32 获取串口高低电平_串口和USB的区别,几种常见的串口协议
  11. H.264 学习建议
  12. Android 闹钟设置最新版
  13. 解决网易云课堂不能进入的问题
  14. html高德地图无法显示,关于高德地图不显示的问题
  15. Matlab数学建模学习报告(一)
  16. office 安装失败原因
  17. raid ahci模式哪个好_一机多用的RAID磁盘阵列 QNAP TR-004体验测评
  18. 将本地项目上传到码云,只需这几步,每个步骤都有图文
  19. 华为P30 后摄像头打不开(C1904失效)维修案例
  20. 嵌入式 课程设计指导书

热门文章

  1. 二维数组绑定到Dropdownlist
  2. Google提供的超强圆角效果
  3. 实用网站、软件、App分享
  4. mybatis源码分析(1)-----sqlSessionFactory创建
  5. python 进程池阻塞和非阻塞_Python协程还不理解?请收下这份超详细的异步编程教程!还没学会来找我!...
  6. Caliburn.Micro入门
  7. showModalDialog的用法
  8. 虚拟ONVIF 摄像机
  9. iOS和js交互三部曲,很不错的文章和demo
  10. 【mybatis深度历险系列】mybatis中的动态sql