题目传送门

 /*
线段树基本功能:区间值的和,修改某个值
*/
#include <cstdio>
#include <cstring>
#define lson l, m, rt << 1
#define rson m+1, r, rt << 1|1 const int MAX_N = + ;
int sum[MAX_N<<]; void pushup(int rt) //杭电大牛:notOnlySuccess 版本
{
sum[rt] = sum[rt<<] + sum[rt<<|];
} void build(int l, int r, int rt)
{
if (l == r)
{
scanf ("%d", &sum[rt]);
return ;
}
int m = (l + r) >> ;
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) >> ;
if (p <= m) update (p, add, lson);
else update (p, add, rson);
pushup (rt);
} int query(int ql, int qr, int l, int r, int rt)
{
if (ql <= l && r <= qr)
{
return sum[rt];
}
int m = (l + r) >> ;
int ans = ;
if (ql <= m) ans += query (ql, qr, lson);
if (qr > m) ans += query (ql, qr, rson); return ans;
} int main(void) //HDOJ 1166 敌兵布阵
{
//freopen ("inA.txt", "r", stdin);
int t, n, cas, ans;
int b, c;
char s[]; while (~scanf ("%d", &t))
{
cas = ;
while (t--)
{
scanf ("%d", &n);
build (, n, );
printf ("Case %d:\n", ++cas);
while (~scanf ("%s", &s))
{
if (strcmp (s, "End") == ) break;
scanf ("%d%d", &b, &c);
if (strcmp (s, "Query") == )
{
ans = query (b, c, , n, );
printf ("%d\n", ans);
}
else if (strcmp (s, "Add") == )
{
update (b, c, , n, );
}
else if (strcmp (s, "Sub") == )
{
update (b, -c, , n, );
}
}
}
} return ;
}

 /*
树状数组
*/
#include <cstdio>
#include <cstring> const int MAX_N = + ;
int a[MAX_N];
int n, num; int lowbit(int t) //求 2^k
{
//return t & (t ^ (t - 1));
return t & (-t);
} void plus(int num, int x) //第i个增加num个人
{
while (x <= n)
{
a[x] += num;
x += lowbit (x);
}
} int sum(int x) //求前x项的和
{
int sum = ;
while (x > )
{
sum += a[x];
x -= lowbit(x);
}
return sum;
} int main(void)
{
//freopen ("inA.txt", "r", stdin); int t;
char op[]; scanf ("%d", &t);
int k = t; while (k--)
{
memset (a, , sizeof (a));
scanf ("%d", &n);
for (int i=; i<=n; ++i)
{
scanf ("%d", &num);
plus (num, i);
}
int r = ;
while (scanf ("%s", &op), op[] != 'E')
{
int a, b;
scanf ("%d%d", &a, &b);
switch (op[])
{
case 'A':
plus (b, a);
break;
case 'S':
plus (-b, a);
break;
case 'Q':
if (r)
printf ("Case %d:\n", t - k);
r = ;
printf ("%d\n", sum (b) - sum (a-));
break;
}
}
} return ;
}

树状数组

线段树(单点更新)/树状数组 HDOJ 1166 敌兵布阵的更多相关文章

  1. 【线段树I:母题】hdu 1166 敌兵布阵

    [线段树I:母题]hdu 1166 敌兵布阵 题目链接:hdu 1166 敌兵布阵 题目大意 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又開始忙乎了.A国在海 ...

  2. HDOJ 1166.敌兵布阵

    2015-06-08 问题简述: 原题的题意相当于有一些连续摆放的箱子,里面装着球,球的数量可以加减,现要查询几个连续的箱子里球的总数,其中存在放球和拿球的操作. 原题链接:http://acm.hd ...

  3. hdoj 1166 敌兵布阵 线段数和树状数组

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  4. hdoj 1166 敌兵布阵【线段树求区间最大值+单点更新】

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  5. hdoj 1166 敌兵布阵(树状数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 思路分析:该问题为动态连续和查询问题,使用数组数组可以解决:也可使用线段树解决该问题: 代码如下 ...

  6. HDOJ 1166 敌兵布阵 (线段树)

    题目: Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Ti ...

  7. HDU.1166 敌兵布阵 (线段树 单点更新 区间查询)

    HDU.1166 敌兵布阵 (线段树 单点更新 区间查询) 题意分析 加深理解,重写一遍 代码总览 #include <bits/stdc++.h> #define nmax 100000 ...

  8. hdu 1166 敌兵布阵 线段树 点更新

    // hdu 1166 敌兵布阵 线段树 点更新 // // 这道题裸的线段树的点更新,直接写就能够了 // // 一直以来想要进线段树的坑,结果一直没有跳进去,今天算是跳进去吧, // 尽管十分简单 ...

  9. HDU 1166 敌兵布阵 (树状数组)

    题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=1166 敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    ...

随机推荐

  1. 对FreeMarker技术的思考

    依照静态非静态来划分网页分为两种:静态网页和非静态网页,究其优缺点而言,静态网页在用户訪问的时候响应快,可是因为里面的数据是写死的.所以致命的缺陷就是数据不能动态显示.非静态页面(如jsp)数据能够动 ...

  2. SpringMVC -- 第一个简单的程序

    学习springMVC,我们来记录下第一个HelloWord的程序 首先.我们组织须要的jar包 commons-logging-1.1.3.jar spring-aop-4.1.7.RELEASE. ...

  3. python day - 19 抽象类 接口类 多态 封装

    一. 抽象类接口类即制定一个规范 特点: 1.不可被实例化. 2.规范子类当中必须事先某个方法. 3.在python中有原生实现抽象类的方法,但没有原生实现接口类的方法. 例题:制定一个规范就是,子类 ...

  4. webdriver.close() quit() 批量kill进程 内存耗尽的解决办法

    问题现象: shell窗口卡,换IP的登录窗,不开: 猜测: 内存耗尽 spider_url,py driver = webdriver.PhantomJS( executable_path='/us ...

  5. 解析SQL中的包含的列和表

    using System; using System.IO; using System.Collections.Generic; namespace SQLProcess { class Progra ...

  6. java 获取项目根目录

    代码入下: request.getSession().getServletContext().getRealPath(); 这里的getRealPath()括号里面可以输入你想得到的具体目录. 需要注 ...

  7. ES6的相关新属性

    ES6  引入了类这个概念. 1.class……extends es6中的class与es5 中的function差不多: class Student extends People , student ...

  8. SPOJ:NO GCD (求集合&秒啊)

    You are given N(1<=N<=100000) integers. Each integer is square free(meaning it has no divisor ...

  9. iOS中键盘的收起

    在UIViewController中收起键盘,除了调用相应控件的resignFirstResponder方法之外,还有另外三种方法: 重载UIViewController中的touchesBegin方 ...

  10. YUIDoc的使用方法小结

    一.YUIDoc概述以及安装YUIDoc是为YUI Library用来生成HTML版API文档的一系列工具集,文档的生成完全基于JavaDoc风格的代码注释规则.该工具是基于Python语言编写,并且 ...