838CDOJ 母仪天下
来源:互联网 发布:陆小凤的身世之谜 知乎 编辑:程序博客网 时间:2024/04/28 09:52
一个简单的线段树,直接套模板就OK。
#include<stdio.h>#include<iostream>#include<cstdlib>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;struct Tree{ int left,right; int sum;}tree[400009];int s[200001];void build(int id, int l, int r){ tree[id].left=l; tree[id].right=r; if(l==r) { tree[id].sum=s[l]; return ; } int mid=(l+r)/2; build(id*2,l,mid); build(id*2+1,mid+1,r); tree[id].sum=tree[id*2].sum+tree[id*2+1].sum;}void update(int id,int pos,int val){ if(tree[id].left==tree[id].right) { tree[id].sum+=val; return; } if(tree[id*2].right>=pos) update(id*2,pos,val); else update(id*2+1,pos,val); tree[id].sum=tree[id*2].sum+tree[id*2+1].sum;}int query(int id,int l, int r){ if(tree[id].left==l&&tree[id].right==r) return tree[id].sum; else { int mid=(tree[id].left+tree[id].right)/2; if(r<=mid) return query(id*2,l,r); else if(l>mid) return query(id*2+1,l,r); else return query(id*2,l,mid)+query(id*2+1,mid+1,r); }}int main(){ int n,m,i,a,b,c; while(scanf("%d%d",&n,&m)==2){ for(i=1;i<=n;i++) scanf("%d",&s[i]); build(1,1,n); while(m--) { scanf("%d%d%d",&a,&b,&c); if(a==1) { update(1,b,c); } else { printf("%d\n",query(1,b,c)); } } } return 0;}
0 0
- 838CDOJ 母仪天下
- cdoj 母仪天下(线段树)
- [CDOJ 838]母仪天下 【线段树手速练习 15分钟内敲完算合格】
- CDOJ-Training for Data Structures 之B - 母仪天下
- 母仪天下
- UESTC 838 母仪天下(树状数组)
- UESTC 838 —— 母仪天下(树状数组模板)
- 天下
- 天下
- 天下
- 天下
- 哪个女人“母仪天下”长达42年?
- CDOJ Clock
- CDOJ Flagstone
- CDOJ 149
- 【CDOJ 1339】
- 破解天下,天下破解
- cdoj 1454 Haberdasher
- 大话数据结构中的树
- 中国剩余定理 即 孙子定理
- [Leetcode] Combination Sum II
- [Leetcode] Reverse Words in a String
- 2038年问题
- 838CDOJ 母仪天下
- spring两种初始化bean的方法
- javascript学习-原生javascript的小特效(简单的运动效果)
- cocoapods specs 镜像
- 免费下载编译器相关的论文
- 二分查找
- 《一万小时天才理论》读后整理
- DLL/EXE查看工具Dumpbin
- 工作的第二个周末