hdu 1166-敌兵布阵 线段树
来源:互联网 发布:刘知白山水画 编辑:程序博客网 时间:2024/06/06 07:07
线段树写法。。。还在研究线段树中。。
#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>#include <queue>#include <vector>#define maxn 50500using namespace std;int a[maxn];int tree[maxn*4];void pushup(int pos){tree[pos]=tree[pos*2]+tree[pos*2+1];//二叉树 }void buildtree(int l,int r,int pos){if(l==r){tree[pos]=a[l];return ;}int mid=l+(r-l)/2;buildtree(l,mid,pos*2);buildtree(mid+1,r,2*pos+1);pushup(pos);}void update(int x,int k,int l,int r,int pos){if(l==r){tree[pos]+=k;return ;}int mid=l+(r-l)/2;if(x<=mid){update(x,k,l,mid,2*pos);} else{update(x,k,mid+1,r,2*pos+1);}pushup(pos);} int query(int ql,int qr,int l,int r,int pos){if(ql<=l&&qr>=r){return tree[pos];}int mid=l+(r-l)/2;int sum=0;if(ql<=mid){sum+=query(ql,qr,l,mid,2*pos);}if(qr>mid){sum+=query(ql,qr,mid+1,r,2*pos+1);}return sum;}int main(){int t,n;int p,q;char s[1001];scanf("%d",&t);for(int k=1;k<=t;k++){scanf("%d",&n);memset(a,0,sizeof(a));for(int i=1;i<=n;++i){scanf("%d",&a[i]);}buildtree(1,n,1);printf("Case %d:\n",k);//getchar();while(scanf("%s",&s)!=EOF){if(s[0]=='E'){break;}if(s[0]=='S'){scanf("%d%d",&p,&q);update(p,-q,1,n,1);}if(s[0]=='A'){scanf("%d%d",&p,&q);update(p,q,1,n,1);}if(s[0]=='Q'){scanf("%d%d",&p,&q);printf("%d\n",query(p,q,1,n,1));}}}return 0;}
0 0
- HDU 1166敌兵布阵 线段树
- HDU 1166 敌兵布阵(线段树)
- 敌兵布阵 1166 HDU 线段树
- hdu 1166 敌兵布阵--线段树
- HDU 1166 敌兵布阵 线段树
- 敌兵布阵 1166 HDU 线段树
- HDU-1166-敌兵布阵(线段树)
- hdu 1166 敌兵布阵(线段树)
- hdu 1166 敌兵布阵 朴素线段树
- hdu 1166 敌兵布阵 (线段树初步)
- 线段树专题:hdu 1166敌兵布阵
- HDU 1166 敌兵布阵(线段树)
- HDU 1166敌兵布阵(线段树)
- HDU 1166 敌兵布阵 (线段树)
- 【线段树】hdu 1166 敌兵布阵
- HDU-1166 敌兵布阵 线段树
- hdu 1166 敌兵布阵 线段树
- hdu 1166 敌兵布阵(线段树)
- rkhunter 脚本学习记录(二)
- db2 断开连接几种方法的比较
- DB2表空间的静默状态
- hdu-1166 敌兵布阵 树状数组
- strlen高效实现
- hdu 1166-敌兵布阵 线段树
- Servlet线程安全
- [LeetCode 21] Merge Two Sorted Lists Solution
- 微软笔试第8道选择题
- Android开发者必备的42个链接
- 开源java企业网站建设系统MiinCMP1.0发布!
- Ruby on Rails /MAC 下安装报错 unknown argument: '-multiply_definedsuppress'
- 通用Makefile
- 初试 MAC 安装 mongodb 及 node.js