线段树点和
来源:互联网 发布:python简明教程pdf下载 编辑:程序博客网 时间:2024/05/10 15:23
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<algorithm>#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1using namespace std;const int maxn=1e5+10;int sto[maxn<<2];void pushup(int rt){ sto[rt]=sto[rt<<1]+sto[rt<<1|1];}void build(int l,int r,int rt){ if(l==r) { scanf("%d",&sto[rt]); return ; } int mid=(l+r)>>1; build(lson); build(rson); pushup(rt);}void update(int p,int v,int l,int r,int rt){ if(l==r) { sto[rt]=v; return; } int mid=(r+l)>>1; if(p<=mid) update(p,v,lson); else update(p,v,rson); pushup(rt);}int query(int L,int R,int l,int r,int rt){ if(L>=l&&R<=r) return sto[rt]; int mid=(r+l)>>1; int sum=0; if(L<=mid) sum+=query(L,R,lson); if(mid<R) sum+=query(L,R,rson); return sum;}int main(){ int n, q; while(scanf("%d%d", &n, &q) != EOF) { build(1, n, 1); while(q--) { char str[5]; scanf("%s", str); if(str[0] == 'Q') { int l, r; scanf("%d%d", &l, &r); printf("%d\n", query(l, r, 1, n, 1)); } else { int pos, value; scanf("%d%d", &pos, &value); update(pos, value, 1, n, 1); } } return 0; }}
0 0
- 线段树点和
- 线段树 点更新和段更新
- 线段树 点更新 区间和 模板
- 点和线段、线段和线段的关系
- 线段树 点更新
- 点,平面和线段关系
- 算法提高 线段和点
- 线段树实现动态查询和删节点
- 线段树-区间单个点更新-区间和-区间最大
- HDU 1166 敌兵布阵 线段树 部分和 点更新
- hdu1166 敌兵布阵(线段树 求区间和 更新点)
- tyvj P1039 线段树点修改和区间查询
- hdu2795线段树点修改
- 线段树 点更新版
- 线段树点修改uva12299
- 线段树点修改hdu1166
- 线段树点修改hdu2795
- 线段树点更新poj2828
- HDU 5839 Special Tetrahedron (三维计算几何)
- 阿里云推荐码-jiyc4w
- 高质量代码的命名法则
- hdu 4433 Locker dp
- 美军网络司令部未来六年之六大预测
- 线段树点和
- 升级10.11后使用CocoaPod出现-bash: pod: command not found 解决办法
- java 反射获取对象的字段和值
- Android中View相关控件的圆角问题
- 总结移动端页面开发时需要注意的一些问题
- iOS中左右滑动切换,滑动标签页导航的设计思路
- selenium server 和 firefox 版本兼容性
- Merge k Sorted Lists 的分治法总结
- java基础——AtomicInteger的并发处理