【codeVS 1082】树状数组(区间修改,区间查询)模版题
题目地址: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】树状数组(区间修改,区间查询)模版题相关推荐
- 校门外的树——树状数组+区间修改
校门外的树 [题目分析]题目描述的是一种区间修改,看起来好像要用线段树.但是对于这种区间内部没有差别并且查询的是区间内的类别的问题,是可以转化为树状数组进行的.毕竟树状数组更加简单. 我们的关注点应该 ...
- 树状数组区间修改和区间求和
最一般树状数组能做到的操作是单点修改,区间求和,都是log(n)级别的.原理就是用树状数组维护a[i]的部分和. 想要做到修改区间,求单点值也很简单,用树状数组维护a[i]的差分数组d[i]的部分和既 ...
- UESTC 1601 艾尔大停电2 二维树状数组+区间更新
艾尔大停电2 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit S ...
- 树状数组 区间update/query
Re [问题引入] 对于区间修改.区间查询这样的简单问题,打一大堆线段树确实是不划算,今天来介绍一下区间查询+区间修改的树状数组 [一些基础] 树状数组的基本知识不再介绍,请自行百度 我们假设sigm ...
- hdu3966 树链剖分点权模板+线段树区间更新/树状数组区间更新单点查询
点权树的模板题,另外发现树状数组也是可以区间更新的.. 注意在对链进行操作时方向不要搞错 线段树版本 #include<bits/stdc++.h> using namespace std ...
- hdu 1556:Color the ball(第二类树状数组 —— 区间更新,点求和)
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- HDU 4031 Attack(线段树/树状数组区间更新单点查询+暴力)
Attack Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others) Total Sub ...
- 一维数状数组区间修改,查询
模板题CODEVS-1082 给你N个数,有两种操作: 1:给区间[a,b]的所有数增加X 2:询问区间[a,b]的数的和. 第一行一个正整数n,接下来n行n个整数, 再接下来一个正整数Q,每行表示操 ...
- Color the ball(树状数组区间更新+单点求值)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1556 Color the ball Time Limit: 9000/3000 MS (Java/Ot ...
- hdu2642二维树状数组单点更新+区间查询
http://acm.hdu.edu.cn/showproblem.php?pid=2642 题目大意:一个星空,二维的.上面有1000*1000的格点,每个格点上有星星在闪烁.一开始时星星全部暗淡着 ...
最新文章
- C++中string查找和取子串和整形转化
- Altium designer 操作笔记
- 北斗导航 | PPP-RTK技术研究进展与试验验证(第十一届中国卫星导航年会报告)
- ABP v1.0正式发布
- 【安卓开发 】Android初级开发(四)ListView
- float数据在计算机内存中的存储方法
- 2021计算机技术调剂,2021年华南师范大学计算机技术考研调剂信息
- 3月第一周中国五大顶级域名增6万 美国增1.8万
- 第一次大作业总结——四则运算程序
- c++ win32 获取串口高低电平_串口和USB的区别,几种常见的串口协议
- H.264 学习建议
- Android 闹钟设置最新版
- 解决网易云课堂不能进入的问题
- html高德地图无法显示,关于高德地图不显示的问题
- Matlab数学建模学习报告(一)
- office 安装失败原因
- raid ahci模式哪个好_一机多用的RAID磁盘阵列 QNAP TR-004体验测评
- 将本地项目上传到码云,只需这几步,每个步骤都有图文
- 华为P30 后摄像头打不开(C1904失效)维修案例
- 嵌入式 课程设计指导书