hdu1166 敌兵布阵 线段树
来源:互联网 发布:用友网络2017最新消息 编辑:程序博客网 时间:2024/04/29 02:07
#include<stdio.h>#include<string.h>int sum[200000],n;void build(int rt,int x,int y,int i,int count){if(x==y)sum[rt]+=count;else{int mid=(x+y)>>1;if(i<=mid)build(rt*2,x,mid,i,count);else build(rt*2+1,mid+1,y,i,count);sum[rt]=sum[rt*2]+sum[rt*2+1];}}int query(int rt,int x,int y,int u,int v){if(u<=x&&y<=v)return sum[rt];else{int mid=(x+y)>>1;if(v<=mid)return query(rt*2,x,mid,u,v);else if(u>=mid+1)return query(rt*2+1,mid+1,y,u,v);elsereturn query(rt*2,x,mid,u,v)+query(rt*2+1,mid+1,y,u,v);}}int main(){int T,t=1;scanf("%d",&T);for(t=1;t<=T;t++){int i,count,x,y;char s[10];scanf("%d",&n);memset(sum,0,sizeof(sum));for(i=1;i<=n;i++){scanf("%d",&count);build(1,1,n,i,count);}printf("Case %d:\n",t);while(~scanf("%s",&s)){if(s[0]=='E')break;else if(s[0]=='A'){scanf("%d%d",&x,&y);build(1,1,n,x,y);}else if(s[0]=='S'){scanf("%d%d",&x,&y);build(1,1,n,x,-y);}else{scanf("%d%d",&x,&y);int ans=query(1,1,n,x,y);printf("%d\n",ans);}}}return 0;}
0 0
- 线段树 hdu1166 (敌兵布阵)
- 【线段树】 hdu1166 敌兵布阵
- hdu1166 敌兵布阵 线段树
- hdu1166敌兵布阵 (线段树)
- hdu1166 敌兵布阵,线段树
- HDU1166 敌兵布阵(线段树)
- hdu1166 敌兵布阵 线段树
- hdu1166- 敌兵布阵线段树
- 【线段树】hdu1166敌兵布阵
- hdu1166 敌兵布阵(线段树)
- 线段树 HDU1166 敌兵布阵
- hdu1166-敌兵布阵(线段树)
- hdu1166 敌兵布阵 线段树
- hdu1166-敌兵布阵 线段树
- hdu1166敌兵布阵 线段树
- HDU1166 敌兵布阵(线段树)
- hdu1166 敌兵布阵 线段树
- HDU1166 -敌兵布阵(线段树)
- 四种不同的 NAT 类型 (P2P入门)
- jboss设置web应用的context root
- (转)MySql可视化工具MySQL Workbench使用教程
- 关于blog迁移
- cocos2d-x 颜色混合
- hdu1166 敌兵布阵 线段树
- hdu2045-不容易系列之(3)—— LELE的RPG难题
- Java 并发
- iOS应用内购买(In App Purchase)总结
- C++ 转换函数 与 4种cast
- C++编译器关注空格
- 杂记
- Android电话拨打流程源码分析
- viewpager里嵌套listview报错