[树状数组]code[vs] 1082——线段树练习 3
来源:互联网 发布:手机淘宝的物流在哪看 编辑:程序博客网 时间:2024/05/22 00:31
ps:博主又A这种水题显然是为了水blog有新姿势。
题目梗概
区间加,询问区间和。
解题思路
什么垃圾,直接线段树。
树状数组也可以区间加的啊,代码短小,常数小。
当然与普通树状数组有所不同。
设
稍微化一下就是
那么我们在维护
区间和容斥一下就可以了。
#include<cstdio>#define LL long longusing namespace std;const int maxn=200005;int n,Q;LL a[maxn],b[maxn];inline int _read(){ int num=0;char ch=getchar(); while (ch<'0'||ch>'9') ch=getchar(); while (ch>='0'&&ch<='9') num=num*10+ch-48,ch=getchar(); return num;}int lowbit(int x){return x&(-x);}void change(int x,int y){for (int i=x;i<=n;i+=lowbit(i)) a[i]+=y,b[i]+=(LL)(x-1)*y;}LL ask(int x){LL num=0;for (int i=x;i;i-=lowbit(i)) num+=(LL)x*a[i]-b[i];return num;}int main(){ freopen("exam.in","r",stdin); freopen("exam.out","w",stdout); n=_read(); for (int i=1;i<=n;i++){ int x=_read(); change(i,x);change(i+1,-x); } Q=_read(); while(Q--){ int d=_read(),L=_read(),R=_read(),x; if (d==1){ x=_read(); change(L,x);change(R+1,-x); }else printf("%lld\n",ask(R)-ask(L-1)); } return 0;}
阅读全文
1 0
- 【CODE[VS]】1082 线段树练习 3 树状数组
- [树状数组]code[vs] 1082——线段树练习 3
- 【code[vs]】1082 线段树练习 3 树状数组区间修改、区间查询
- 【数据结构】树状数组模板--CODE[VS] 1080线段树练习and1081线段树练习2
- Code Vs 1082 线段树练习 3
- 形形色色的线段树练习——codevs线段树练习1-5:线段树,树状数组及分块模板
- Code Vs 1081 线段树练习 2
- codevs1080线段树练习(树状数组)
- Codevs_P1080 线段树练习(树状数组)
- 线段树练习_codevs1080_树状数组
- 线段树练习五(+树状数组)
- Codevs1082 线段树练习三(树状数组)
- [树状数组][codevs1081]线段树练习2
- CODE[VS] 1082 线段树练习 3 (区间修改、区间求和)
- POJ3468 —— 线段树 || 树状数组
- 【练习手记】【多题合集】用树状数组做线段树练习1、2、3
- 线段树与树状数组模版及专题练习
- codevs1081线段树练习2(树状数组)
- 中国剩余定理求解同余线性方程组—(互素和非互素的情况)
- Caffe-OpenCL在ubuntu16.04.2上的简要安装指南
- java线程池
- javascript如何查找字符中的回文串?
- Java Web开发技术(二)
- [树状数组]code[vs] 1082——线段树练习 3
- Qt加载动态库的步骤
- iText7画坐标图
- 使用PHPZIE 出错时
- 整合SSH java.lang.ClassCastException: xxx_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy
- Android仿ios年龄滚轮大全
- HDU 1079 Calendar Game
- windows下Mysql多实例安装说明
- android,安卓,TabLayout + ViewPager + Fragment