【HDOJ】1166 敌兵布阵
线段树。
#include <stdio.h> #define maxn 55555 int sums[maxn<<]; void PushUP(int rt) {
sums[rt] = sums[rt<<] + sums[rt<<|];
} void build(int l, int r, int rt) {
int m;
if (l == r) {
scanf("%d", &sums[rt]);
return ;
}
m = (l+r)>>;
build(l, m, rt<<);
build(m+, r, rt<<|);
PushUP(rt);
} void update(int des, int delta, int l, int r, int rt) {
int m;
if (l == r) {
sums[rt] += delta;
return ;
}
m = (l+r)>>;
if (des <= m)
update(des, delta, l, m, rt<<);
else
update(des, delta, m+, r, rt<<|);
PushUP(rt);
} int query(int ll, int rr, int l, int r, int rt) {
int m, val = ;
if (ll<=l && rr>=r)
return sums[rt]; m = (l+r)>>;
if (ll <= m)
val += query(ll, rr, l, m, rt<<);
if (m < rr)
val += query(ll, rr, m+, r, rt<<|); return val;
} int main() {
int case_n, n;
char cmd[];
int i, j, k; scanf("%d", &case_n); for (k=; k<=case_n; ++k) {
scanf("%d", &n);
build(, n, );
printf("Case %d:\n", k);
while () {
scanf("%*c%s", cmd);
if (cmd[] == 'E')
break;
scanf("%d %d", &i, &j);
if (cmd[] == 'Q')
printf("%d\n", query(i,j,,n,));
else if (cmd[] == 'A')
update(i, j, , n, );
else
update(i, -j, , n, );
}
} return ;
}
【HDOJ】1166 敌兵布阵的更多相关文章
- 线段树(单点更新)/树状数组 HDOJ 1166 敌兵布阵
题目传送门 /* 线段树基本功能:区间值的和,修改某个值 */ #include <cstdio> #include <cstring> #define lson l, m, ...
- HDOJ 1166.敌兵布阵
2015-06-08 问题简述: 原题的题意相当于有一些连续摆放的箱子,里面装着球,球的数量可以加减,现要查询几个连续的箱子里球的总数,其中存在放球和拿球的操作. 原题链接:http://acm.hd ...
- hdoj 1166 敌兵布阵【线段树求区间最大值+单点更新】
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- hdoj 1166 敌兵布阵 线段数和树状数组
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- hdoj 1166 敌兵布阵(树状数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 思路分析:该问题为动态连续和查询问题,使用数组数组可以解决:也可使用线段树解决该问题: 代码如下 ...
- HDOJ 1166 敌兵布阵 (线段树)
题目: Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Ti ...
- HDOJ(HDU).1166 敌兵布阵 (ST 单点更新 区间求和)
HDOJ(HDU).1166 敌兵布阵 (ST 单点更新 区间求和) 点我挑战题目 题意分析 根据数据范围和询问次数的规模,应该不难看出是个数据结构题目,题目比较裸.题中包括以下命令: 1.Add(i ...
- HDU 1166 敌兵布阵 (树状数组)
题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=1166 敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) ...
- hdu acm 1166 敌兵布阵 (线段树)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- hud 1166 敌兵布阵
http://acm.hdu.edu.cn/showproblem.php?pid=1166 敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory ...
随机推荐
- 用友U8按BOM计算销售订单物料需求SQL代码 第一稿
drop table #tmp1999 drop table #tmp2999 drop table #tmp3999 drop table #tmp4999 drop table #tmp5999 ...
- hosts文件配置作用
hosts文件默认路径: C:\Windows\System32\drivers\etc hosts文件认识 Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域 ...
- Linux apt-get error
csh@csh-laptop:~/ejabberd-15.03$ sudo apt-get install mysqlReading package lists... DoneBuilding dep ...
- mysql学习笔记(1)
参考教材<MySQL入门经典> 王雨竹 高飞 机械工业出版社 软件下载:http://www.mysql.com 安装好后打开命令提示符 (黑窗口) net start mys ...
- if参数小结
条件表达式 if [ -f file ] 如果文件存在 if [ -d ... ] 如果目录存在 if [ -s file ] 如果文件存在且非空 if [ -r file ...
- 【原创】Linux编译内核
Linux 编译内核 大致分这几个步骤 1.准备编译工具.内核文件 2.开始编译 3.将编译好的新内核install进系统 4.查看是否成功. 一.准备好必备的库和内核文件 1.添加必备的编译 ...
- jquery tab mouseover 特效
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JavaScript学习总结【12】、JS AJAX应用
1.AJAX 简介 AJAX(音译为:阿贾克斯) = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技 ...
- Laravel 5.1 事件、事件监听的简单应用
有时候当我们单纯的看 Laravel 手册的时候会有一些疑惑,比如说系统服务下的授权和事件,这些功能服务的应用场景是什么,其实如果没有经历过一定的开发经验有这些疑惑是很正常的事情,但是当我们在工作 ...
- 字符串匹配的python实现
所有字符串匹配算法的核心问题是,当出现不匹配时,如何向后移动模式串 一.暴力匹配算法 如果要匹配一个字符串s 和一个模式串p,则从i=0开始依次匹配s[i:(i+len(p))],简单粗暴,代码如下: ...