【线段树】HDU 1166 敌兵布阵
2024-08-26 15:19:45
这道题目是线段树里面最基础的单点更新问题。
设计的知识点包括线段树的单点更新和区间查询。
题目链接: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;
}
最新文章
- idea 小技巧
- 【CodeVS 3153】取石子游戏
- 【poj2823】 Sliding Window
- js 字符串转化成数字
- suibi
- TextView中gravity属性值测定
- cocos2dx 音效 粒子 数据存储
- css :active伪类的理解
- NOIP2014_day2:无线网络发射器选址
- LeetCode 292. Nim Game (取物游戏)
- php执行linux命令的6个函数
- Python-生成器_监听文件输入的例子_37
- MongoDB调优-查询优化-MongoDB Profiler
- Linux基础命令---文本显示tac
- HTML的实际演练1
- Eclipse+pydev解决中文显示和注释问题的方法大全
- DOM基础代码练习(一)
- plsql实例精讲部分笔记
- Spring整合JavaMail
- Android内存优化10 内存泄漏常见情况1 静态泄漏
热门文章
- /bin/sh^M: bad interpreter: No such file or directory 问题解决
- $spfa-dfs$优化板子
- 数据结构实验之查找六:顺序查找(SDUT 3378)
- YII框架的行为
- ROS里程计
- BAT 定时将多个本地文件同步到共享目录
- [luogu 5024] 保卫王国
- (大型网站之Nginx)图解正向代理、反向代理、透明代理
- CentOS下载与服务器版安装(VMware)
- 2018-2019-2 网络对抗技术 20165212 Exp6 信息搜集与漏洞扫描