HDU 1166 排兵布阵(线段树单点更新)
题意:
给定n个兵营的士兵初始值, 然后有最多40000个操作;
操作一共有两种, 一个是查询给定[a,b]区间兵营的士兵总和。
另一个是增加/减少指定兵营的士兵数目。
输出每次查询的值。
分析:
线段树单点更新模板
代码:
#include <bits/stdc++.h>
using namespace std;
const int maxn = + ;
struct{
int l, r, sum;
}tree[maxn*];//起码要*4
int a[maxn];
int n;
void build(int index, int l , int r){
tree[index].l = l, tree[index].r = r;
if( l == r){
tree[index].sum = a[l];//递归建树,当l=r就是叶子节点没办法再分,直接赋值
return;
}
int mid = (l+r) / ;
build(index * , l, mid);
build(index * + , mid + , r);
tree[index].sum = tree[index * ].sum + tree[index* + ].sum;//不是叶子节点, 总和等于它儿子的总和
} void update(int index, int a, int val){ //修改总和的
if(tree[index].l == a && tree[index].r == a){
tree[index].sum += val;//找到该点,直接更改
return;
}
int mid = (tree[index].l + tree[index].r) / ; if(a <= mid)
update(index * , a , val);
else
update(index * + , a, val); tree[index].sum += val;//路径上的点都要更改。
} int query(int index , int ql, int qr){ if(tree[index].l == ql && tree[index].r == qr){
return tree[index].sum;
} int mid = (tree[index].l + tree[index].r) / ;
if(qr <= mid) //查询区间只在这个的左子树
return query(index * , ql, qr);
if(ql > mid) //只在右子树
return query(index * + , ql, qr); return query(index * , ql, mid) + query(index * + , mid + , qr);//左右子树都有的话, 拆分查询区间
} int main(){
int T;
scanf("%d", &T);
int kase = ;
while(T--){
printf("Case %d:\n", kase++);
scanf("%d", &n);
for(int i = ; i <= n; i++){
scanf("%d", &a[i]);
}
build(,,n);
char cho[];
while(scanf("%s",cho) && cho[] != 'E'){
int x, y;
scanf("%d %d", &x, &y);
if(cho[] == 'Q'){
printf("%d\n", query(,x,y));
}
else if(cho[] == 'A'){
update(,x,y);
}
else update(,x,-y);
}
}
return ;
}
HDU 1166 排兵布阵(线段树单点更新)的更多相关文章
- HDU.1166 敌兵布阵 (线段树 单点更新 区间查询)
HDU.1166 敌兵布阵 (线段树 单点更新 区间查询) 题意分析 加深理解,重写一遍 代码总览 #include <bits/stdc++.h> #define nmax 100000 ...
- HDU 1166 敌兵布阵(线段树单点更新,板子题)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU 1166 敌兵布阵(线段树单点更新)
敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ...
- HDU 1166 敌兵布阵(线段树单点更新,区间查询)
描述 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况 ...
- HDU 1166 敌兵布阵 线段树单点更新求和
题目链接 中文题,线段树入门题,单点更新求和,建一棵树就可以了. #include <iostream> #include <cstdio> #include <cmat ...
- 【原创】hdu 1166 敌兵布阵(线段树→单点更新,区间查询)
学习线段树的第三天...真的是没学点啥好的,又是一道水题,纯模板,我个人觉得我的线段树模板还是不错的(毕竟我第一天相当于啥都没学...找了一整天模板,对比了好几个,终于找到了自己喜欢的类型),中文题目 ...
- hdu 1166 敌兵布阵 线段树 点更新
// hdu 1166 敌兵布阵 线段树 点更新 // // 这道题裸的线段树的点更新,直接写就能够了 // // 一直以来想要进线段树的坑,结果一直没有跳进去,今天算是跳进去吧, // 尽管十分简单 ...
- HDU 1166 敌兵布阵 <线段树 单点修改 区间查询>
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- HDU 1754 线段树 单点跟新 HDU 1166 敌兵布阵 线段树 区间求和
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- hdu 1166 敌兵布阵 线段树区间修改、查询、单点修改 板子题
题目链接:敌兵布阵 题目: C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视 ...
随机推荐
- c++ 语法解析
大小 size()是取字符串长度的,跟length()用法相同 size_t其实是一种类型,类似于无符号整形(unsignted int).可以理解成unsignted int size,当unsig ...
- AtCoder Grand Contest 017 B
B - Moderate Differences Time limit : 2sec / Memory limit : 256MB Score : 400 points Problem Stateme ...
- Oozie的作用
Oozie的作用: 1.统一调度hadoop系统中常见的mr任务启动. hdfs操作. shell调度. hive操作等 2.使得复杂的依赖关系.时间触发.事件触发使用xml语言进行表达,开发效率提高 ...
- 在nginx上部署vue项目(history模式)--demo实列;
在很早之前,我写了一篇 关于 在nginx上部署vue项目(history模式) 但是讲的都是理论,所以今天做个demo来实战下.有必要让大家更好的理解,我发现搜索这类似的问题还是挺多的,因此在写一篇 ...
- C#将excel数据按照需求导入Sql server遇到的问题(参考而已)
1.千万不要使用永中表格(WPS没用过,这里只是个人观点,不是说永中表格的) 我在公司得到的任务是将excel数据按照需求导入数据库总共主表大概3张,所以有点复杂(列子用的简单表,公司东西还是不要放出 ...
- iOS面试题之runloop
本文围绕以下几个部分展开对runloop的叙述. 1.runloop是什么/runloop的概念? 2.NSRunLoop 和 CFRunLoopRef? 3.runloop和线程的关系? 4.run ...
- Redis基础知识详解(非原创)
文章大纲 一.Redis介绍二.Redis安装并设置开机自动启动三.Redis文件结构四.Redis启动方式五.Redis持久化六.Redis配置文件详解七.Redis图形化工具八.Java之Jedi ...
- void运算符
void是一元运算符,它出现在操作数之前,操作数可以是任意类型,操作数会照常计算,但忽略计算结果并返回undefined.由于void会忽略操作数的值,因此在操作数具有副作用的时候使用void来让程序 ...
- 6 Specialzed layers 特殊层 第二部分 读书笔记
CAGradientLayer CAGradientLayer is used to generate a smooth gradient between two or more colors. ...
- 【HEVC简介】High Level Syntax
参考文献:见<High Efficiency Video Coding (HEVC)>High Level Syntax章节 <HEVC标准介绍.HEVC帧间预测论文笔记>系列 ...