[线段树] HDU 1166 - 敌兵布阵
来源:互联网 发布:超星尔雅网络登录页面 编辑:程序博客网 时间:2024/06/05 00:47
线段树第一题~
#include <stdio.h>#define lson rt << 1#define rson rt << 1 | 1int maxn[50005 << 2], N;void build(int l, int r, int rt){ if(l == r) { scanf("%d", &maxn[rt]); return ; } int mid = (l + r) >> 1; build(l, mid, lson); build(mid + 1, r, rson); maxn[rt] = maxn[lson] + maxn[rson];}void update(int l, int r, int rt, int where, int val){ maxn[rt] += val; if(l == r) return; int mid = (l + r) >> 1; if(where <= mid) update(l, mid, lson, where, val); else update(mid + 1, r, rson, where, val);}int query(int l, int r, int rt, int L, int R){ if(L <= l && R >= r) return maxn[rt]; int mid = (l + r) >> 1; int ans = 0; if(L <= mid) ans += query(l, mid, lson, L, R); if(R > mid) ans += query(mid + 1, r, rson, L, R); return ans;}int main(){ int T, N; char ch[100]; scanf("%d", &T); for(int i = 1; i <= T; i++) { printf("Case %d:\n", i); scanf("%d", &N); build(1, N, 1); int x, y; while(scanf("%s", ch) && ch[0] != 'E') { scanf("%d %d", &x, &y); if(ch[0] == 'Q') printf("%d\n", query(1, N, 1, x, y)); else if(ch[0] == 'A') update(1, N, 1, x, y); else if(ch[0] == 'S') update(1, N, 1, x, -y); } } return 0;}
0 0
- HDU 1166敌兵布阵 线段树
- HDU 1166 敌兵布阵(线段树)
- 敌兵布阵 1166 HDU 线段树
- hdu 1166 敌兵布阵--线段树
- HDU 1166 敌兵布阵 线段树
- 敌兵布阵 1166 HDU 线段树
- HDU-1166-敌兵布阵(线段树)
- hdu 1166 敌兵布阵(线段树)
- hdu 1166 敌兵布阵 朴素线段树
- hdu 1166 敌兵布阵 (线段树初步)
- 线段树专题:hdu 1166敌兵布阵
- HDU 1166 敌兵布阵(线段树)
- HDU 1166敌兵布阵(线段树)
- HDU 1166 敌兵布阵 (线段树)
- 【线段树】hdu 1166 敌兵布阵
- HDU-1166 敌兵布阵 线段树
- hdu 1166 敌兵布阵 线段树
- hdu 1166 敌兵布阵(线段树)
- spoj 694 Distinct Substrings (后缀数组应用)
- percona工具使用一 pt-table-sync
- win7开启热点时“无法启动承载网络”的解决方法
- return换行也有错?javascript中return的设计缺陷
- 非递归地中序遍历BST
- [线段树] HDU 1166 - 敌兵布阵
- Android Studio 1.x版 签名key生成,查看key的sha1 和MD5 的方法
- 为什么mvc不是23种设计模式之一?
- 【BZOJ3888】【Usaco2015 Jan】Stampede 线段树判区间覆盖
- 【黑马程序员】c语言的动态内存分配
- 准备从事IOS开发
- android服务学习笔记
- HDU1317( 负权处理)
- 新的开始