#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=50000+5;
int num[maxn];
char str[10];
struct Node
{int l,r;int nsum;
}Tree[maxn*3];
//自上到下建树,自下到上赋值
void build(int i,int l,int r)
{Tree[i].l=l;Tree[i].r=r;if(l==r)                                //递归出口{Tree[i].nsum=num[l];return;}int mid=(l+r)>>1;build(i<<1,l,mid);build((i<<1)+1,mid+1,r);Tree[i].nsum=Tree[i<<1].nsum+Tree[(i<<1)+1].nsum;
}
//自上到下的更新
void Add(int i,int t,int b)             //t为军营编号,b为变动
{Tree[i].nsum+=b;if(Tree[i].l==t&&Tree[i].r==t) return;int mid=(Tree[i].l+Tree[i].r)>>1;if(t<=mid) Add(i<<1,t,b);else Add((i<<1)+1,t,b);
}
//查询
int query(int i,int l,int r)
{if(l==Tree[i].l&&r==Tree[i].r) return Tree[i].nsum;int mid=(Tree[i].l+Tree[i].r)>>1;if(r<=mid) return query((i<<1),l,r);else if(l>mid) return query((i<<1)+1,l,r);else return query(i<<1,l,mid)+query((i<<1)+1,mid+1,r);
}
int main()
{int t;while(scanf("%d",&t)==1){int n,kase=0;while(t--){scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&num[i]);build(1,1,n);printf("Case %d:\n",++kase);while(scanf("%s",&str)==1){if(str[0]=='E') break;int a,b;scanf("%d%d",&a,&b);if(str[0]=='A') Add(1,a,b);else if(str[0]=='S') Add(1,a,-b);else printf("%d\n",query(1,a,b));}}}return 0;
}

线段树专题 A(单点更新)相关推荐

  1. 数据结构之线段树入门(单点更新区间查询)

    线段树是学习数据结构必须学习的一种数据结构,在ACM,蓝桥等比赛中是经常出现的.利用线段树解题,会使得题目简单易理解.而且线段树是数据结构中比较基础而且用的很多的一种. 线段树定义 线段树是一种二叉搜 ...

  2. hdu.3308 LCIS(线段树,区间合并+单点更新)

    按照傻崽大神的线段树修炼路线,自己做的第二道区间合并的题. 问题比较简单明了,区间求最长连续上升子序列,但是是需要单点更新的 n个数, m组操作 Q A B 询问[A,B]区间的最长连续上升子序列: ...

  3. POJ2886线段树 Joseph游戏(单点更新)

    题目:Who Gets the Most Candies? 题意: 1.n个人进行Joseph游戏,游戏共p轮(p为 思路:用相对坐标来处理,例如这一轮出局的是p,下一个要+m,则p出局时p+1就变成 ...

  4. 线段树专题-黑白棋盘 BZOJ-1453

    线段树专题-黑白棋盘 题目来源 BZOJ−1453BZOJ-1453BZOJ−1453 题意 QQQ次操作 每次操作给出(x,y)(x,y)(x,y),将(x,y)(x,y)(x,y)个格子颜色取反 ...

  5. 线段树专题-等差子序列 BZOJ-2124

    线段树专题-等差子序列 感谢 感谢孙耀峰的线段树PPT,使我获益匪浅. 题目来源 BZOJ−2124BZOJ-2124BZOJ−2124 题意 给出长度为nnn的1−n1-n1−n的排列AAA 问是否 ...

  6. 线段树基础操作--单点or区间更新+查询

    问题概述:先输入一个数n,表示一个班有n个人,一开始每人手中都有一个糖果,后输入一个数m并进行m次操作,每次操作a.b.c表示从第a个人到第b个人每个人重新分配得到c个糖果,求最后一个班所有人的总糖果 ...

  7. 2018 UESTC 线段树专题

    A - 一棵简单的线段树 A[1...n]初始全为0. 1. 给两个数p 和 x(1≤p≤n),单点更新 A[p] <- x 2. 给两个数L和R (1≤L<R≤n),  L到R区间里这几 ...

  8. 【HDU - 1698】 Just a Hook(线段树模板 区间覆盖更新(laz标记) + 区间和查询 )

    题干: In the game of DotA, Pudge's meat hook is actually the most horrible thing for most of the heroe ...

  9. 线段树模板(建树+更新)

    线段树建树模板 #define lson l,m,rt<<1 //2*rt #define rson m+1,r,rt<<1|1 //2*rt+1 int map[100000 ...

最新文章

  1. 【Tree】迷宫生成算法
  2. mysql创建用户,并赋予权限:只能查某个数据库中的某张表(只读)
  3. sharp扫地机器人讲话_扫地机机器人,智能扫地机器人推荐
  4. 从入门到放弃,C++ 真这么难?
  5. 02.CSS基础笔记及导入
  6. keil5ARM编译器改字体大小和颜色的方法
  7. 监控IIS的运行状态
  8. 计算机配置扫盲,扫盲了。。怎么识别电脑配置好坏?
  9. 教学案例 计算机,计算机教学案例
  10. Google earth engine 入门与简介
  11. 赛尔号对战c语言程序,赛尔号计算解析系列文章(第一期)
  12. flv.js视频播放库基本用法
  13. 网络爬虫,淘宝API商品详情测试(抓取详情数据)
  14. 电脑显示计算机资源不足 新用户无法登录,三招解决win10电脑提示资源不足的问题...
  15. 51单片机与LCD1602接口电路与程序
  16. 计算机视觉:基于BOW的图像检索与识别
  17. 《蛋仔派对》沙漠通关思路
  18. 【git】git配置自带的查看分支log图
  19. FreeModbus应用系列之一
  20. 电子技术专业基础与实务(中级)考试介绍与复习方法

热门文章

  1. 关于项目的可行性分析
  2. SpringCloud 第十章 Hystrix断路器
  3. 【人工智能】2028:AI创造了哪些工作?未来10年21个核心工作岗位 。
  4. Nginx启动失败的几种错误处理
  5. Unexpected error while obtaining UI hierarchy:使用uiautomatorviewer定位元素报错
  6. 2021年新版电影小程序商业版+前端无后门+搭建教程亲测可用
  7. l开头的英文车标是什么车_L开头的车标叫什么,L开头全是字母的车品牌
  8. 2021年安全员-A证复审考试及安全员-A证考试试题
  9. 判断用户输入的字母大小写C语言+if语句的初级学习
  10. MKS MONSTER8 V1.0使用说明书(基于Marlin 2.0.X固件配置Voron 2.4)