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. 轻量级HTTP服务器Nginx(配置与调试Nginx)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://ixdba.blog.51cto.com/2895551/790611 Nginx ...

  2. [Luogu 2805] NOI2009 植物大战僵尸

    这题是个比较经典的最大权闭合子图,可以建图转化为最小割问题,再根据最大流最小割定理,采用任意一种最大流算法求得. 对于每个点,如果点权w为正,则从源点到这个点连一条边权为w的有向边:否则如果w为负则从 ...

  3. Canvas 基本绘图方法总结

    一.基本内容  1.简单来说,HTML5提供的新元素<canvas>  2.Canvas在HTML页面提供画布的功能,在画布中绘制各种图形  3.Canvas绘制的图形与HTML页面无关, ...

  4. 【BZOJ】1202: [HNOI2005]狡猾的商人

    [题意]w组数据,给定n和m,给出m段区间[s,t](1<=s<=t<=n)的数字和,求是否矛盾.n<100,m<1000,w<100. [算法]带权并查集 [题解 ...

  5. 【洛谷 P2783】 有机化学之神偶尔会做作弊 (双联通分量)

    题目链接 可能是除了<概率论>的最水的黑题了吧 用\(Tarjan\)缩点(点双联通分量),然后就是树上两点之间的距离了,跑\(LCA\)就好了. #include <cstdio& ...

  6. windows 上启动appium

    import org.apache.commons.exec.CommandLine; import org.apache.commons.exec.DefaultExecuteResultHandl ...

  7. rabbitmq之核心构架和原理总结(四)

    前言 前面博文已经将安装配置和站点管理介绍了,现在开始正式学习rabbitmq的使用了: rabbitMQ的构架 rabbitmq作为消息队列,一条消息从发布到订阅消费的完整流程为: 消息 --> ...

  8. 【Python学习笔记】Coursera之PY4E学习笔记——File

    1.打开文件 使用handle=open(filename,mode)打开文件.这一函数将会返回一个handle(应该翻译为“柄”吧)用来操控文件,参数filename是一个字符串.参数mode是可选 ...

  9. PHP 接入(第三方登录)QQ 登录 OAuth2.0 过程中遇到的坑

    前言 绝大多数网站都集成了第三方登录,降低了注册门槛,增强了用户体验.最近看了看 QQ 互联上 QQ 登录的接口文档.接入 QQ 登录的一般流程是这样的:先申请开发者 -> 然后创建应用(拿到一 ...

  10. Call Mode feature

    起源 user 在插著 充電器 打電話的狀況下, 為了安全起見, 避免 充電器在這時損害手機,間接造成 user 的傷害, 而有了這 feature, 在 battery voltage Vbat & ...