这道题目是线段树里面最基础的单点更新问题。

设计的知识点包括线段树的单点更新和区间查询。

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

G++代码:

#include <cstdio>
#include <string>
using namespace std; #define lson l, m, rt << 1
#define rson m+1, r, rt << 1 | 1 const int maxn = 50050;
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 res = 0;
if (L <= m) res += query(L, R, lson);
if (R >= m+1) res += query(L, R, rson);
return res;
} int T, n, cas = 1, a, b;
char s[11]; int main() {
scanf("%d", &T);
while (T --) {
printf("Case %d:\n", cas ++);
scanf("%d", &n);
build(1, n, 1);
while (scanf("%s", s)) {
if (s[0] == 'Q') { // Query
scanf("%d%d", &a, &b);
printf("%d\n", query(a, b, 1, n, 1));
} else if (s[0] == 'A') { // Add
scanf("%d%d", &a, &b);
update(a, b, 1, n, 1);
} else if (s[0] == 'S') { // Sub
scanf("%d%d", &a, &b);
update(a, -b, 1, n, 1);
} else if (s[0] == 'E') { // End
break;
}
}
}
return 0;
}

最新文章

  1. idea 小技巧
  2. 【CodeVS 3153】取石子游戏
  3. 【poj2823】 Sliding Window
  4. js 字符串转化成数字
  5. suibi
  6. TextView中gravity属性值测定
  7. cocos2dx 音效 粒子 数据存储
  8. css :active伪类的理解
  9. NOIP2014_day2:无线网络发射器选址
  10. LeetCode 292. Nim Game (取物游戏)
  11. php执行linux命令的6个函数
  12. Python-生成器_监听文件输入的例子_37
  13. MongoDB调优-查询优化-MongoDB Profiler
  14. Linux基础命令---文本显示tac
  15. HTML的实际演练1
  16. Eclipse+pydev解决中文显示和注释问题的方法大全
  17. DOM基础代码练习(一)
  18. plsql实例精讲部分笔记
  19. Spring整合JavaMail
  20. Android内存优化10 内存泄漏常见情况1 静态泄漏

热门文章

  1. /bin/sh^M: bad interpreter: No such file or directory 问题解决
  2. $spfa-dfs$优化板子
  3. 数据结构实验之查找六:顺序查找(SDUT 3378)
  4. YII框架的行为
  5. ROS里程计
  6. BAT 定时将多个本地文件同步到共享目录
  7. [luogu 5024] 保卫王国
  8. (大型网站之Nginx)图解正向代理、反向代理、透明代理
  9. CentOS下载与服务器版安装(VMware)
  10. 2018-2019-2 网络对抗技术 20165212 Exp6 信息搜集与漏洞扫描