HDU1166 敌兵布阵 【线段树】
来源:互联网 发布:花千骨翅膀进阶数据 编辑:程序博客网 时间:2024/06/05 22:38
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166
题解:
线段树裸体,注意细节!
代码:
// 线段树#include <cstdio>#include <string>#include <cstring>#include <iostream>using namespace std;const int size = 1000005;struct _tree {int l, r, tot;} seg[size];int n;int tot = 0;void init() {int i, k;for ( k = 1; k < n; k <<= 1 );for ( i = k; i < 2*k; i ++ ) {seg[i].l = seg[i].r = i-k+1;seg[i].tot = 0;}for ( i = k-1; i > 0; i -- ) {seg[i].l = seg[2*i].l;seg[i].r = seg[2*i+1].r;seg[i].tot = 0;}}void insert(int i, int x, int plus) {if(seg[i].l <= x && x <= seg[i].r) seg[i].tot += plus;if(seg[i].l == seg[i].r) return ;int mid = (seg[i].l+seg[i].r) >> 1;if(x > mid) insert(i*2+1, x, plus);else insert(i*2, x, plus);}void query(int x, int y, int i) {if(seg[i].l == x && seg[i].r == y) {tot += seg[i].tot;return ;}if(seg[i].l == seg[i].r) return ;int mid = seg[i].l+seg[i].r >> 1;if(x > mid) query(x, y, 2*i+1);else if(y <= mid) query(x, y, 2*i);else {query(x, mid, 2*i);query(mid+1, y, 2*i+1);}}int main() {int tst, cc = 0;scanf("%d", &tst);while( tst -- ) {scanf("%d", &n);init();for ( int i = 1; i <= n; i ++ ) {int k;scanf("%d", &k);insert(1, i, k);}printf("Case %d:\n", ++cc);while( true ) {string a;int b, c;cin >> a;if( a == "End" ) break;scanf("%d %d", &b, &c);if( a == "Add" ) {insert(1, b, c);} else if( a == "Sub" ) {insert(1, b, -c);} else if( a == "Query" ) {tot = 0;query(b, c, 1);printf("%d\n", tot);}}}return 0;}
0 0
- 线段树 hdu1166 (敌兵布阵)
- 【线段树】 hdu1166 敌兵布阵
- hdu1166 敌兵布阵 线段树
- hdu1166敌兵布阵 (线段树)
- hdu1166 敌兵布阵,线段树
- HDU1166 敌兵布阵(线段树)
- hdu1166 敌兵布阵 线段树
- hdu1166- 敌兵布阵线段树
- 【线段树】hdu1166敌兵布阵
- hdu1166 敌兵布阵(线段树)
- 线段树 HDU1166 敌兵布阵
- hdu1166-敌兵布阵(线段树)
- hdu1166 敌兵布阵 线段树
- hdu1166-敌兵布阵 线段树
- hdu1166敌兵布阵 线段树
- HDU1166 敌兵布阵(线段树)
- hdu1166 敌兵布阵 线段树
- HDU1166 -敌兵布阵(线段树)
- KISS 原则翻译
- java的观察者模式
- 变脸式应用 - 逻辑页
- Django处理文件上传File Uploads
- 深入解析Python编程中super关键字的用法
- HDU1166 敌兵布阵 【线段树】
- java 实现数字签名自动补零
- C++ map的基本操作和使用
- ubuntu 12.04安装OpenGL
- 2.Swift基本运算符(Basic Operators)
- 下拉菜单
- Future模式
- Extjs store根据key获取对应的value
- 变脸式应用 - 调用后端接口