题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166

题意:中文题诶~

思路:线段树单点更新,区间求和模板

代码:

  1. #include <iostream>
  2. #include <stdio.h>
  3. #define lson l, mid, rt << 1
  4. #define rson mid + 1, r, rt << 1 | 1
  5. using namespace std;
  6.  
  7. const int MAXN = 5e4 + ;
  8. int sum[MAXN << ];
  9.  
  10. void push_up(int rt){//向上求和
  11. sum[rt] = sum[rt << ] + sum[rt << | ];
  12. }
  13.  
  14. //建树
  15. void build(int l, int r, int rt){//sum[rt] 对应区间 [l, r] 的和
  16. if(l == r){
  17. scanf("%d", &sum[rt]);
  18. return;
  19. }
  20. int mid = (l + r) >> ;
  21. build(lson);
  22. build(rson);
  23. push_up(rt);//向上更新节点
  24. }
  25.  
  26. //单点更新
  27. void updata(int p, int add, int l, int r, int rt){//在p点增加add
  28. if(l == r){//找到p点
  29. sum[rt] += add;//单点更新
  30. return;
  31. }
  32. int mid = (l + r) >> ;
  33. if(p <= mid) updata(p, add, lson);
  34. else updata(p, add, rson);
  35. push_up(rt);//向上更新节点
  36. }
  37.  
  38. //区间求和
  39. int query(int L, int R, int l, int r, int rt){//对[L, R]区间求和
  40. if(L <= l && R >= r) return sum[rt];//当前区间[l, r]包含在求和区间[L, R]中
  41. int ans = ;
  42. int mid = (l + r) >> ;
  43. if(L <= mid) ans += query(L, R, lson);//L在mid左边
  44. if(R > mid) ans += query(L, R, rson);//R在mid右边
  45. return ans;
  46. }
  47.  
  48. int main(void){
  49. int t, n;
  50. scanf("%d", &t);
  51. for(int i = ; i <= t; i++){
  52. printf("Case %d:\n", i);
  53. scanf("%d", &n);
  54. build(, n, );
  55. char s[];
  56. while(scanf("%s", s) && s[] != 'E'){
  57. int x, y;
  58. scanf("%d%d", &x, &y);
  59. if(s[] == 'Q') printf("%d\n", query(x, y, , n, ));
  60. else if(s[] == 'A') updata(x, y, , n, );
  61. else updata(x, -y, , n, );
  62. }
  63. }
  64. return ;
  65. }

hdu1166(线段树单点更新&区间求和模板)的更多相关文章

  1. POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和)

    POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和) 题意分析 卡卡屋前有一株苹果树,每年秋天,树上长了许多苹果.卡卡很喜欢苹果.树上有N个节点,卡卡给他们编号1到N,根 ...

  2. POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化)

    POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化) 题意分析 前置技能 线段树求逆序对 离散化 线段树求逆序对已经说过了,具体方法请看这里 离散化 有些数 ...

  3. HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对)

    HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对) 题意分析 给出n个数的序列,a1,a2,a3--an,ai∈[0,n-1],求环序列中逆序对 ...

  4. hdu 1166线段树 单点更新 区间求和

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  5. hdu1394(枚举/树状数组/线段树单点更新&区间求和)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题意:给出一个循环数组,求其逆序对最少为多少: 思路:对于逆序对: 交换两个相邻数,逆序数 +1 ...

  6. hdu2795(线段树单点更新&区间最值)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795 题意:有一个 h * w 的板子,要在上面贴 n 条 1 * x 的广告,在贴第 i 条广告时要 ...

  7. HDU 3308 LCIS(线段树单点更新区间合并)

    LCIS Given n integers. You have two operations: U A B: replace the Ath number by B. (index counting ...

  8. 【HDU】1754 I hate it ——线段树 单点更新 区间最值

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  9. HDU 1166 敌兵布阵(线段树点更新区间求和裸题)

    Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任 ...

随机推荐

  1. 在RedHat Linux系统中安装和配置snmp服务

    检查系统是否安装snmp服务 # rpm -qa|grep snmp net-snmp-5.3.2.2-17.el5 net-snmp-perl-5.3.2.2-17.el5 net-snmp-dev ...

  2. OC中RAC编程block的基本使用

    在OC中block的基本使用 // // ViewController.h // RAC--test // // Created by Aaron on 17/1/17. // Copyright © ...

  3. Linux桥接网络配置

    在虚拟机网络配置中,选择桥接的方式.然后进入linux进行设置. 编辑 vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPR ...

  4. Quartz的misfire理解

    misfire用于Trigger触发时,线程池中没有可用的线程或者调度器关闭了,此时这个Trigger变为misfire.当下次调度器启动或者有可以线程时,会检查处于misfire状态的Trigger ...

  5. uboot 2013.01 代码简析(1)开发板配置

    u-boot下载地址:ftp://ftp.denx.de/pub/u-boot/u-boot-2013.01.01.tar.bz2 下载之后对该文件进行解压. 我试着分析smdk2410_config ...

  6. 可信执行环境(TEE)介绍 与应用

    原文:http://blog.csdn.net/wed110/article/details/53894927 可信执行环境(TEE,Trusted Execution Environment) 是G ...

  7. Spring Boot2.0之多数据源分布式事务问题

    分布式事务解决方案的问题, 分布式事务产生的原因: 多个不同的服务连接不同的数据源 ,做分布式事务的管理. 这种情况是连接两个数据源的情况,然后事务管理器是这样的 只管理了test02的这端业务代码. ...

  8. UER#7 T2

    题意:给定n个数,对于2到n,分别输出一个答案.答案定义为:对于当前的数k,在原数组中找一个长度为k的区间,使得区间最值之差最小,输出差值.注意,差值允许5%的误差. 很少看见近似算法的题啊..跪烂V ...

  9. HTML5 SVG实现过山车动画

    HTML5 SVG实现过山车动画是一款jQuery特效很酷的HTML5 SVG动画,这款HTML5动画是过山车效果,主要是利用了SVG的path动画来实现的,效果非常酷. http://www.hui ...

  10. html5--2.3新的布局元素(2)-article

    html5--2.3新的布局元素(2)-article 学习要点 了解article元素的语义和用法 完成一个简单的实例 article元素(标签) 用于定义一个独立的内容区块,比如一篇文章,一篇博客 ...