codevs1081线段树练习2(树状数组)
来源:互联网 发布:js 鼠标右键事件 编辑:程序博客网 时间:2024/05/21 22:39
题目描述 Description
给你N个数,有两种操作
1:给区间[a,b]的所有数都增加X
2:询问第i个数是什么?
输入描述 Input Description
第一行一个正整数n,接下来n行n个整数,再接下来一个正整数Q,表示操作的个数. 接下来Q行每行若干个整数。如果第一个数是1,后接3个正整数a,b,X,表示在区间[a,b]内每个数增加X,如果是2,后面跟1个整数i, 表示询问第i个位置的数是多少。
输出描述 Output Description
对于每个询问输出一行一个答案
样例输入 Sample Input
3
1
2
3
2
1 2 3 2
2 3
样例输出 Sample Output
5
数据范围及提示 Data Size & Hint
数据范围
1<=n<=100000
1<=q<=100000
#include<cstdio>using namespace std;int n,m,i,j,x,y,z,q,a[100001];int lowbit(int x){ return x&(-x);}void add(int loc,int value){ int j; for (j=loc;j<=n;j+=lowbit(j)) a[j]+=value;}int query(int loc){ int ans=0,j; for (j=loc;j>=1;j-=lowbit(j)) ans+=a[j]; return ans;}int main(){ scanf("%d",&n); for (i=1;i<=n;i++) { scanf("%d",&x); add(i,x); } scanf("%d",&m); for (i=1;i<=m;i++) { scanf("%d",&q); if (q==1) { scanf("%d %d %d",&x,&y,&z); for (j=x;j<=y;j++) add(j,z); } if (q==2) { scanf("%d",&x); printf("%d\n",query(x)-query(x-1)); } } return 0;}
0 0
- [树状数组][codevs1081]线段树练习2
- codevs1081线段树练习2(树状数组)
- 线段树模版(codevs1081线段树练习2)
- [CodeVS1081]线段树练习2(区间修改+单点询问)
- codevs1080线段树练习(树状数组)
- 水题笔记: codevs1081 线段树练习2 [重口味线段树(区间修改)]
- Codevs_P1080 线段树练习(树状数组)
- 线段树练习_codevs1080_树状数组
- 线段树练习五(+树状数组)
- Codevs1082 线段树练习三(树状数组)
- 【codevs1081】【树状数组】区间修改 单点查询
- 【数据结构】树状数组模板--CODE[VS] 1080线段树练习and1081线段树练习2
- Codevs 1081 线段树练习 2(线段树&&树状数组&&分块)
- 【练习手记】【多题合集】用树状数组做线段树练习1、2、3
- 线段树与树状数组模版及专题练习
- codevs 1080_线段树练习_树状数组
- 【CODE[VS]】1082 线段树练习 3 树状数组
- 线段树,树状数组
- 树莓派wifi配置
- 【bzoj4305】数列的GCD
- [TwistedFate]NSArray NSNumber NSValue
- 使用 CXF 做 webservice 简单例子
- 红黑树与平衡二叉树区别?
- codevs1081线段树练习2(树状数组)
- 数据结构例程——应用图的深度优先遍历思路求解问题
- matlab符号语言还未消化的语句
- python PIL读取图像转换为灰度图及另存为其它格式(也可批量改格式)
- CentOS6.4配置163的yum源
- MyBatis实现关联表查询
- 关于接口,总结如下
- Java的反射机制
- 开发工具文件格式简析(.suo、.user、.obj、……)(一)(待续)