[线段树][CODEVS 1080]题解
来源:互联网 发布:网站数据库下载代码 编辑:程序博客网 时间:2024/05/20 02:28
#include<cstdio>#include<algorithm>#include<cmath>#include<iostream>#define inf 0x3f3f3f3f#define LL unsigned long long#define lson u<<1,l,mid#define rson u<<1|1,mid+1,r#define maxn 200005using namespace std;struct node{int l,r;int s;}e[4*maxn+1];int n,m;void build(int u,int l,int r){e[u].l=l;e[u].r=r;if(l==r){scanf("%d",&e[u].s);return ;}int mid=(l+r)>>1;build(lson);build(rson);e[u].s=e[u<<1].s+e[u<<1|1].s;}void update(int u,int l,int r,int x,int add){if(l==r){e[u].s+=add;return ;}int mid = (l+r)>>1;if(x<=mid)update(lson,x,add);else update(rson,x,add);e[u].s=e[u<<1].s+e[u<<1|1].s;}int query(int u,int l,int r,int x,int y){if(l==x&&r==y)return e[u].s;int mid=(l+r)>>1;if(y<=mid)return query(lson,x,y);else if(x>mid)return query(rson,x,y);else return query(lson,x,mid)+query(rson,mid+1,y);}/******Program Begin*********/int main(){scanf("%d",&n);build(1,1,n);scanf("%d",&m);int k,x,y;for(int i=1;i<=m;i++){scanf("%d%d%d",&k,&x,&y);if(k==1)update(1,1,n,x,y);else if(k==2)printf("%d\n",query(1,1,n,x,y));}return 0;}/*******Program End**********/
0 0
- [线段树][CODEVS 1080]题解
- [题解] codevs 1080 线段树练习
- CODEVS 1080线段树练习
- 1080 线段树练习 codevs
- CODEVS 1080 线段树练习
- Codevs 1080 线段树联系
- [Codevs] 1080 线段树练习
- 【codevs 1080】线段树练习
- codevs 1080 (zkw线段树)
- 【codevs 1080~1082】线段树练习重做
- CODEVS 1954 线段树
- <线段树系列1> codevs 1080 线段树练习
- CodeVS 1094 FBI树 题解
- CODEVS-2018-反病毒软件-线段树
- codevs线段树练习3
- [codevs] 线段树练习4
- [codevs]: 切水果(线段树)
- 【codevs 1080】线段树练习 之 花样解法
- HDFS的JAVA客户端编写(JAVA代码实现对HDFS的操作)
- 关于安卓错误的那点事——惨不忍睹的错误
- Ten sort algorithms in interviews
- anjular.js初体验
- java网络编程
- [线段树][CODEVS 1080]题解
- 记毕设中遇到的菜鸡问题----3
- 215. Kth Largest Element in an Array
- myBatis配置(一)
- 动态数组
- 剑指offer1:赋值运算符函数
- Android 开发艺术与探究 第一章 Activity 的生命周期和启动模式
- myBatis(二)方法、控制、接口使用
- 让自己的软件出现在选择打开列表的软件中