博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1166 敌兵布阵 (线段树)
阅读量:6251 次
发布时间:2019-06-22

本文共 1236 字,大约阅读时间需要 4 分钟。

最基础的线段树,单点更新。完全跟着HH的代码风格写的。

code:

#include<cstdio>
#define lson l, m, rt<<1
#define rson m+1, r, rt<<1|1
const 
int maxn = 
50005 ;
int sum[maxn<<
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 t=
1, T, n, i, j, a, b ;
    
char str[
10] ;
    scanf(
"
%d
", &T) ;
    
while(T--){
        scanf(
"
%d
", &n) ;
        build(
1, n, 
1) ;
        printf(
"
Case %d:\n
", t++) ;
        
while(
1){
            scanf(
"
%s
", str) ;
            
if(str[
0]==
'
E
'
break ;
            scanf(
"
%d%d
", &a, &b) ;
            
if(str[
0]==
'
A
') update(a, b, 
1, n, 
1) ;
            
else 
if(str[
0]==
'
S
') update(a, -b, 
1, n, 
1) ;
            
else printf(
"
%d\n
", query(a, b, 
1, n, 
1)) ;
        }
    }
    
return 
0 ;} 

转载于:https://www.cnblogs.com/xiaolongchase/archive/2012/05/09/2491157.html

你可能感兴趣的文章
HTML DOM 之 DOM对象:Document Object Model (文档对象模型)
查看>>
qt 学习之路2
查看>>
算法分析-快速排序QUICK-SORT
查看>>
线上应用故障排查之二:高内存占用
查看>>
第四次作业
查看>>
异常处理汇总 ~ 修正果带着你的Code飞奔吧!
查看>>
百度地图需要的效果-有感
查看>>
BZOJ 1853: [Scoi2010]幸运数字
查看>>
BFS --- 素数环
查看>>
PCIE_DMA:xapp1052学习笔记
查看>>
给报表增加页眉
查看>>
python ----字符串基础练习题30道
查看>>
K 班1-7,alpha,beta 作业成绩汇总
查看>>
uva-10879-因数分解
查看>>
python 调用aiohttp
查看>>
Spring Boot中使用MyBatis注解配置详解
查看>>
linux下文件的一些文件颜色的含义
查看>>
跨域iframe高度自适应(兼容IE/FF/OP/Chrome)
查看>>
基于WinDbg的内存泄漏分析
查看>>
如何花更少的时间学习更多的知识
查看>>