线段树入门 单点更新区间查询 南阳oj 116
来源:互联网 发布:拉伸片的编程 编辑:程序博客网 时间:2024/05/16 07:36
线段树入门基础题,直接模板单点更新区间查询,下面贴AC代码:
#include<stdio.h>int a[3000000];void build(int l,int r,int node){if(l==r){scanf("%d",&a[node]);return;}int m=(l+r)/2;build(l,m,node*2);build(m+1,r,node*2+1);a[node]=a[node*2]+a[node*2+1];}int query(int ql,int qr,int l,int r,int node){if(l>=ql&&r<=qr)return a[node];int m,ans=0;m=(l+r)/2;if(m<ql)ans+=query(ql,qr,m+1,r,node*2+1);else if(m>=qr)ans+=query(ql,qr,l,m,node*2);else{ans+=query(ql,qr,m+1,r,node*2+1);ans+=query(ql,qr,l,m,node*2);}return ans;}void update(int l,int r,int k,int add,int node){a[node]+=add;if(l==r)return;int m=(l+r)/2;if(m<k)update(m+1,r,k,add,node*2+1);elseupdate(l,m,k,add,node*2); }int main(){int n,m,i;scanf("%d%d",&n,&m);build(1,n,1);while(m--){int l,r,k,add; char s[10];scanf("%s",s);if(s[0]=='Q'){scanf("%d%d",&l,&r);printf("%d\n",query(l,r,1,n,1));}else{scanf("%d%d",&k,&add);update(1,n,k,add,1);}}}
阅读全文
1 0
- 线段树入门 单点更新区间查询 南阳oj 116
- 线段树入门 区间更新 单点查询 南阳oj 123
- 南阳oj 123 树状数组入门 区间更新 单点求值
- zoj (单点更新区间查询:线段树)
- 线段树单点更新和区间查询
- hdu1166(线段树单点更新区间查询)
- Light OJ 1080 - Binary Simulation - (线段树区间更新 单点查询)
- hdu5316 Magician (线段树+单点更新+区间查询+区间合并)
- [模板]线段树的建树、查询、单点更新、区间更新
- HDU 1166 敌兵布阵 (线段树单点更新+区间查询入门)
- 线段树(堆式)[单点更新, 区间查询]
- hdoj 4339 线段树 单点更新,区间查询
- HDU 2795 线段树(单点更新 区间查询)
- HDOJ3016Man Down(线段树(区间更新,单点查询)+DP)
- HDU1754线段树单点更新区间查询(数组版)
- Necklace (线段树单点更新+区间查询+离线操作)
- HDU 4819:单点更新,区间查询的二维线段树
- hdu 4046 Panda (线段树 单点更新 区间查询)
- .Netcore之日志组件Log4net、Nlog性能比较
- Git理解
- mac操作记录
- 完全卸载vs2015
- Android View相关知识点
- 线段树入门 单点更新区间查询 南阳oj 116
- 免安装版的Tomcat 的基本配置
- 关于Activity的onNewIntent方法调用时机
- Activity的启动模式记录
- Android进阶之关于开源库(框架)的知识点记录
- 获取手机网络状态之ConnectivityManager
- [matlab]Removing a block and making connections
- 手机网站表层div滑动,导致底层body滑动(touchmove的阻止)
- Unicode编码区分