1. #include<cstdio>
  2. #include<string>
  3. #include<cstdlib>
  4. #include<cmath>
  5. #include<iostream>
  6. #include<cstring>
  7. #include<set>
  8. #include<queue>
  9. #include<algorithm>
  10. #include<vector>
  11. #include<map>
  12. #include<cctype>
  13. #include<stack>
  14. #include<sstream>
  15. #include<list>
  16. #include<numeric>
  17. #define debug() puts("++++")
  18. #define gcd(a,b) __gcd(a,b)
  19. #define lson l,m,rt<<1
  20. #define rson m+1,r,rt<<1|1
  21. #define fi first
  22. #define se second
  23. #define pb push_back
  24. #define sqr(x) ((x)*(x))
  25. #define ms(a,b) memset(a,b,sizeof(a))
  26. #define sz size()
  27. #define be begin()
  28. #define pu push_up
  29. #define pd push_down
  30. #define cl clear()
  31. #define lowbit(x) -x&x
  32. #define all 1,n,1
  33. #define rep(i,x,n) for(int i=(x); i<(n); i++)
  34. #define in freopen("in.in","r",stdin)
  35. #define out freopen("out.out","w",stdout)
  36. using namespace std;
  37. typedef long long ll;
  38. typedef unsigned long long ULL;
  39. typedef pair<int,int> P;
  40. const int INF = 0x3f3f3f3f;
  41. const ll LNF = 1e18;
  42. const int maxn = 1e5;
  43. const int maxm = 1e6 + 10;
  44. const double PI = acos(-1.0);
  45. const double eps = 1e-8;
  46. const int dx[] = {-1,1,0,0,1,1,-1,-1};
  47. const int dy[] = {0,0,1,-1,1,-1,1,-1};
  48. int dir[4][2] = {{0,1},{0,-1},{-1,0},{1,0}};
  49. const int mon[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  50. const int monn[] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  51. int sum[maxn<<2];
  52. void PushUp(int rt)
  53. {
  54. sum[rt]=sum[rt<<1]+sum[rt<<1|1];
  55. }
  56. void build(int l,int r,int rt)
  57. {
  58. if(l==r)
  59. {
  60. scanf("%d",&sum[rt]);
  61. return ;
  62. }
  63. int m = (l+r)>>1;
  64. build(lson);
  65. build(rson);
  66. PushUp(rt);
  67. }
  68. void update(int p,int add,int l,int r,int rt)
  69. {
  70. if(l==r)
  71. {
  72. sum[rt] += add;
  73. return ;
  74. }
  75. int m = (l+r)>>1;
  76. if(p<=m) update(p,add,lson);
  77. else update(p,add,rson);
  78. PushUp(rt);
  79. }
  80. int query(int L,int R,int l,int r,int rt)
  81. {
  82. if(L<=l && r<=R)
  83. {
  84. return sum[rt];
  85. }
  86. int m = (l+r)>>1;
  87. int ans = 0;
  88. if(L<=m) ans += query(L,R,lson);
  89. if(R>m) ans += query(L,R,rson);
  90. return ans;
  91. }
  92. int main()
  93. {
  94. int T,n;
  95. scanf("%d",&T);
  96. for(int cas=1;cas<=T;cas++)
  97. {
  98. printf("Case %d:\n",cas);
  99. scanf("%d",&n);
  100. build(1,n,1);
  101. char op[15];
  102. while(scanf("%s",op))
  103. {
  104. if(op[0]=='E') break;
  105. int a,b;
  106. scanf("%d%d",&a,&b);
  107. if(op[0]=='Q')
  108. {
  109. printf("%d\n",query(a,b,1,n,1));
  110. }
  111. else if(op[0]=='S') update(a,-b,1,n,1);
  112. else update(a,b,1,n,1);
  113. }
  114. }
  115. }

HDU 1611 敌兵布阵【线段树模板】的更多相关文章

  1. HDU.1166 敌兵布阵 (线段树 单点更新 区间查询)

    HDU.1166 敌兵布阵 (线段树 单点更新 区间查询) 题意分析 加深理解,重写一遍 代码总览 #include <bits/stdc++.h> #define nmax 100000 ...

  2. hdu 1166 敌兵布阵 线段树 点更新

    // hdu 1166 敌兵布阵 线段树 点更新 // // 这道题裸的线段树的点更新,直接写就能够了 // // 一直以来想要进线段树的坑,结果一直没有跳进去,今天算是跳进去吧, // 尽管十分简单 ...

  3. HDU 1166 敌兵布阵(线段树单点更新)

    敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ...

  4. HDU 1166 敌兵布阵(线段树单点更新,板子题)

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

  5. HDU 1754 线段树 单点跟新 HDU 1166 敌兵布阵 线段树 区间求和

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

  6. HDU 1166 敌兵布阵 <线段树 单点修改 区间查询>

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

  7. hdu 1166 敌兵布阵 (线段树、单点更新)

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

  8. hdu 1166 敌兵布阵 线段树区间修改、查询、单点修改 板子题

    题目链接:敌兵布阵 题目: C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视 ...

  9. hdu 1166 敌兵布阵(线段树,树状数组)

    http://acm.hdu.edu.cn/showproblem.php?pid=1166 直接线段树模板 AC代码: #include<iostream> #include<cs ...

  10. HDU 1166 敌兵布阵 线段树

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

随机推荐

  1. Java实现二叉树的先序、中序、后序、层序遍历(递归和非递归)

    二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的.对于二叉树,有前序.中序以及后序三种遍历方法.因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易 ...

  2. 使用Apache Curator监控Zookeeper的Node和Path的状态

    1.Zookeeper经常被我们用来做配置管理,配置的管理在分布式应用环境中很常见,例如同一个应用系统需要多台 PC Server 运行,但是它们运行的应用系统的某些配置项是相同的,如果要修改这些相同 ...

  3. truncate与delete以及drop

    truncate:删除整个表,但不删除定义(删除了整个表的数据,但表结构还在) drop:删除整个表,表数据和表结构都删除了 delete:删除表中数据 比较delete和drop 1.truncat ...

  4. Linux查看进程的所有子进程和线程

    得到进程的pid: ps -ef | grep process_name | grep -v "grep" | awk '{print $2}' 查看进程的所有线程 # ps mp ...

  5. bzoj 1878: [SDOI2009]HH的项链 ——树状数组+ 差分

    Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一 段贝壳,思考它们所表达的含义.HH不断地收集新的贝壳,因此他的项链变得 ...

  6. Quick-Cocos2dx-Community_3.6.3_Release 编译时libtiff.lib 无法解析

    Quick-Cocos2dx-Community_3.6.3_Release 使用VS2012编译,报错: libtiff.lib lnk2001 无法解析的外部符号 ltod3 类似于上面这种,刚才 ...

  7. HDU 1002 A + B Problem II (大数加法)

    题目链接 Problem Description I have a very simple problem for you. Given two integers A and B, your job ...

  8. js 合并多个对象 Object.assign

    Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象. var o1 = { a: 1 };var o2 = { b: 2 };var o3 ...

  9. bzoj 2730 割点

    首先我们知道,对于这张图,我们可以枚举坍塌的是哪个点,对于每个坍塌的点,最多可以将图分成若干个不连通的块,这样每个块我们可能需要一个出口才能满足题目的要求,枚举每个坍塌的点显然是没有意义的,我们只需要 ...

  10. Html5_sessionStrong和localStorage的灵活使用

    谈谈这两个属性sessionStrong和localStorage是Html5新增点属性,用来记录一些数据在浏览器. 两者的区别sessionStrong存储的数据是暂时的,浏览器关掉后,存储下来的数 ...