hdu 1166 敌兵布阵
来源:互联网 发布:美国商业数据分析硕士 编辑:程序博客网 时间:2024/05/14 02:35
这是一道线段树里最简单的一类题目了,单点更新类型!
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166
#include <cstdio>#define lson l , m , rt<<1#define rson m+1 , r , rt<<1|1const int maxx=55555;int sum[maxx<<2];void pushUp(int rt){ sum[rt]=sum[rt<<1]+sum[rt<<1|1];}void build(int l,int r,int rt){if(l==r){scanf("%d",&sum[rt]);return ;}int m=(l+r)>>1;build(lson);build(rson);pushUp(rt);}void update(int p,int add,int l,int r,int rt){if(l==r){ sum[rt]+=add; return ;}int m=(l+r)>>1;if(p<=m)update(p,add,lson);else update(p,add,rson);pushUp(rt);}int query(int L,int R,int l,int r,int rt){if(L<=l && R>=r){return sum[rt];}int m=(l+r)>>1;int ret=0;if(L<=m)ret+=query(L,R,lson);if(R>m)ret+=query(L,R,rson);return ret;}int main(){int cas;scanf("%d",&cas);for(int i=1;i<=cas;i++){printf("Case %d:\n",i); int n,a,b;scanf("%d",&n);build(1,n,1);while(true){char op[10];scanf("%s",op);if(op[0]=='E')break;scanf("%d%d",&a,&b);if(op[0]=='A')update(a,b,1,n,1);else if(op[0]=='S')update(a,-b,1,n,1);else printf("%d\n",query(a,b,1,n,1));}}return 0;}
- HDU 1166 敌兵布阵
- HDU 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- HDU 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- HDU 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- HDU 1166 敌兵布阵
- HDU 1166 - 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- 五绝.2009年5月12日汶川大地震周年祭
- lisp中的链表
- Android的计量单位px,in,mm,pt,dp,dip,sp
- Android安装卸载程序具体操作方法解析
- 数据结构及算法学习总结(一)
- hdu 1166 敌兵布阵
- POJ 3668 Game of Lines
- 机房收费系统验收报告
- C++Primer学习笔记(二)
- UVA 11817 Tunnelling the Earth
- 新的开始
- html meta viewport
- Matlab安装中出现Real-Time Windows Target kernel是啥意思?
- hdu 1754 I Hate It