HDU1166敌兵布阵
来源:互联网 发布:淘宝大数据平台架构 编辑:程序博客网 时间:2024/06/14 07:58
HDU1166敌兵布阵
简单的线段树,单点更新及区间求和,不需优化,更新到叶子节点
#include<cstdio>struct node{ int left,right; int sum;}tree[50000*4];int p,add;void Build(int l,int r,int cur){ tree[cur].left=l; tree[cur].right=r; if(l==r){ scanf("%d",&tree[cur].sum); return ; } int mid=(l+r)/2; Build(l,mid,cur*2); Build(mid+1,r,cur*2+1); tree[cur].sum=tree[cur*2].sum+tree[cur*2+1].sum;}void Update(int cur){ if(tree[cur].left==tree[cur].right&&tree[cur].left==p){ tree[cur].sum+=add; return ; } int mid=(tree[cur].left+tree[cur].right)/2; if(p<=mid)Update(cur*2); else Update(cur*2+1); tree[cur].sum=tree[cur*2].sum+tree[cur*2+1].sum;}int Query(int l,int r,int cur){ if(l==tree[cur].left&&r==tree[cur].right)return tree[cur].sum; int mid=(tree[cur].left+tree[cur].right)/2; if(r<=mid)return Query(l,r,cur*2); else if(l>mid)return Query(l,r,cur*2+1); else return Query(l,mid,cur*2)+Query(mid+1,r,cur*2+1);}int main(){ int T,n,a,b; char ch[10]; scanf("%d",&T); for(int t=1;t<=T;t++){ printf("Case %d:\n",t); scanf("%d",&n); Build(1,n,1); while(1){ scanf("%s",ch); if(ch[0]=='E')break; scanf("%d%d",&a,&b); if(ch[0]=='Q')printf("%d\n",Query(a,b,1)); else if(ch[0]=='A'){p=a;add=b;Update(1);} else{p=a;add=-b;Update(1);} } } return 0;}
0 0
- hdu1166 敌兵布阵
- hdu1166 敌兵布阵
- HDU1166 敌兵布阵
- hdu1166 敌兵布阵
- hdu1166 敌兵布阵
- hdu1166(敌兵布阵)
- HDU1166:敌兵布阵
- hdu1166敌兵布阵
- HDU1166--敌兵布阵
- HDU1166 敌兵布阵
- hdu1166 敌兵布阵
- hdu1166 敌兵布阵
- hdu1166敌兵布阵
- hdu1166敌兵布阵
- hdu1166 敌兵布阵
- HDU1166 敌兵布阵
- hdu1166 敌兵布阵
- hdu1166敌兵布阵
- 技术篇-符号制作-标记符号制作
- 线段树的建立、更新、查找
- objectc category(分类)
- Git使用 - 获取忽略移除修改
- 【Code Forces 320D】【贪心+暴力】 "Or" Game 数列乘k次x后求最大or值
- HDU1166敌兵布阵
- 比较实用的注册表实用工具
- Android沉浸式状态栏实现
- hihocoder 1223 : 不等式(最大团问题)
- Secret
- wpf探秘之B哥Dispatcher私房菜(1)
- Android:TextView超出部分自动添加省略号
- paypal nvp name value paire paypal ecshop sanbox测试账号
- 【Window下apache服务设置最大连接数】