线段树单点更新模板 HDU-1166
2017-08-14 09:30
537 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166
一共有三种操作:
在第i个节点增加j个人
在第i个节点减少j个人
查询i, j之间的总人数
一道线段树单点更新的模板题
代码:
一共有三种操作:
在第i个节点增加j个人
在第i个节点减少j个人
查询i, j之间的总人数
一道线段树单点更新的模板题
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define lson ins<<1 #define rson ins<<1|1 #define merge tree[ins]=tree[lson]+tree[rson] #define mid (r+l)/2 using namespace std; const int Max = 50052; int tree[Max << 2]; int data[Max << 2]; void build(int r, int l, int ins) { if (l == r) { tree[ins] = data[l]; } else { build(r, mid, lson); build(mid + 1, l, rson); merge; } } void updata(int l, int r, int ins, int en, int add) { if (l == r) { tree[ins] += add; } else { if (en <= mid)updata(l, mid, lson, en, add); else updata(mid + 1, r, rson, en, add); merge; } } int query(int el, int er, int l, int r, int ins) { if (el <= l && er >= r)return tree[ins]; else { int ans = 0; if (el <= mid)ans += query(el, er, l, mid, lson); if (er > mid)ans += query(el, er, mid + 1, r, rson); return ans; } } int main() { int T, cases = 1; scanf("%d", &T); while (T--) { int n; scanf("%d", &n); for (int a = 1; a <= n; a++) { scanf("%d", &data[a]); } build(1, n, 1); char opera[10]; int ip, add; printf("Case %d:\n", cases++); while (~scanf("%s", opera)) { if (opera[0] == 'E')break; scanf("%d%d", &ip, &add); if (opera[0] == 'A') { updata(1, n, 1, ip, add); } else if (opera[0] == 'S') { updata(1, n, 1, ip, -add); } else if (opera[0] == 'Q') { printf("%d\n", query(ip, add, 1, n, 1)); } } } return 0; }
相关文章推荐
- HDU(1166),线段树模板,单点更新,区间总和
- 线段树(单点更新(模板)) 之 hdu 1166
- 线段树(单点更新(模板)) 之 hdu 1166
- HDU 1166-敌兵布阵【树状数组&&线段树单点更新】【模板】
- kuangbin专题七:A题 HDU 1166 敌兵布阵(单点更新,区域查询求和的线段树模板)
- hdu 1166 敌兵布阵 (线段树、树状数组模板,单点更新)
- HDU - 1166 A - 敌兵布阵 线段树单点更新模板
- 线段树 : hdu 1166 示例 [ 单点更新 ]
- HDU 1754 B I Hate It 线段树 单点更新 区间最大值 模板
- HDU 1166 敌兵布阵 线段树入门_单点更新
- HDU 1166 敌兵布阵 【线段树入门题,单点更新,结构题数组】
- HDU 1166 敌兵布阵(线段树 单点更新)
- 树状数组、线段树模板(一)——单点更新 + HDU 1166 敌兵布阵
- HDU 1166 敌兵布阵【线段树 单点更新】
- HDU 1166 (线段树--单点更新,区域查询)
- HDU 1754 B I Hate It 线段树 单点更新 区间最大值 模板
- 线段树单点更新模板-杭电1166
- HDU 1166 敌兵布阵(线段树单点更新)
- [ACM] hdu 1166 敌兵布阵 (线段树,单点更新)
- HDU 1166 敌兵布阵[线段树单点更新成段查询]