【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 ...
随机推荐
- Android手机出现"已安装了存在签名冲突的同名数据包"的原因及解决办法
http://blog.csdn.net/dyllove98/article/details/8830264 如果你不是开发者:如果你在android上更新一个已经安装过较早版本软件时,安装到最后一步 ...
- .net的 async 和 await
async 和 await 出现在C# 5.0之后,关系是两兄弟,Task是父辈,Thread是爷爷辈,这就是.net 多线程处理的东西,具体包括 创建线程,线程结果返回,线程中止,线程中的异常处理 ...
- 定位相关-CLLocationManager的使用。
#import "ViewController.h" #import <CoreLocation/CoreLocation.h> @interface ViewCont ...
- 贪心算法:旅行商问题(TSP)
TSP问题(Traveling Salesman Problem,旅行商问题),由威廉哈密顿爵士和英国数学家克克曼T.P.Kirkman于19世纪初提出.问题描述如下: 有若干个城市,任何两个城市之间 ...
- 关于C++对汉字拼音的处理(3)
之所以汉字转拼音的博文能出到3,主要是因为没有很完美的C++的解决方案,但是写到了这里可以有一个小结了. 以前的方法都有这种那种弊端,如果出现了无法识别的汉字(简体的)就无法修改处理了,但是下面的这种 ...
- spring setter方法注入
<bean id="dao" class="Dao"></bean> <bean id="service" c ...
- jira汉化,破解,升级
交给我这个任务,我先在网络上查了,好些资料,先实验的是6.3.6版本的,这个安装包我是从csdn上下载的.tar.gz的安装,汉化过程也都没有问题.但是在运行过程中不显示下拉菜单,于是我又在官网下载的 ...
- IE11的CSS兼容性问题
最近测试给了我一大堆BUG,一瞅发现全是IE11的.吐槽一下这个浏览器真的比较特立独行.很多默认的样式跟别的浏览器不同,而且最明显的一点应该是padding左右内边距往往比别的浏览器大了一倍.但是当需 ...
- linux下安装phpredis
一.redis安装 1. yum install redis (不行的先执行:yum install epel-release,再yum install redis) 2.启动服务 redis-ser ...
- PHP通过(PDO)Mysql表字段一键生成创建sqlite的SQL
首发于:http://www.zzzzy.com/201406053158.html /** * Mysql表字段一键生成创建sqlite的SQL 2 * @author: Skiychan < ...