线段树-单点更新-HDU 1166 敌兵布阵
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
using namespace std;
const int MAX=500009;
int sum[MAX<<2];
void pushUp(int root)
{
sum[root]=sum[root<<1]+sum[root<<1|1];
}
void build(int l,int r,int root)
{
if(l==r)
{
scanf("%d",&sum[root]);
return ;
}
int mid=(l+r)>>1;
build(l, mid, root<<1);
build(mid+1, r, root<<1|1);
pushUp(root);
}
void update(int i,int val,int l,int r,int root)
{
if(l==i&&r==i)
{
sum[root]+=val;
return ;
}
int mid=(l+r)>>1;
if(i<=mid)
{
update(i, val, l, mid, root<<1);
}
else
{
update(i, val, mid+1, r, root<<1|1);
}
pushUp(root);
}
int query(int rootL,int rootR,int l,int r,int root)
{
if(rootL<=l&&rootR>=r)
{
return sum[root];
}
int mid=(l+r)>>1;
int ans=0;
if(rootL<=mid)
{
ans+=query(rootL, rootR, l, mid, root<<1);
}
if(rootR>mid)
{
ans+=query(rootL, rootR, mid+1, r, root<<1|1);
}
return ans;
}
int main()
{
int k=1;
int T;
int n;
scanf("%d",&T);
while (T--) {
scanf("%d",&n);
build(1, n, 1);
printf("Case
%d:\n",k++);
char s[20];
int i,j;
while (scanf("%s",s)!=EOF) {
if(s[0]=='E')
break;
scanf("%d%d",&i,&j);
switch (s[0]) {
case 'A':
update(i, j , 1, n, 1);
break;
case 'S':
update(i, -j, 1, n, 1);
break;
case 'Q':
printf("%d\n",query(i, j, 1, n, 1));
break;
}
}
}
return 0;
}
线段树-单点更新-HDU 1166 敌兵布阵的更多相关文章
- HDU.1166 敌兵布阵 (线段树 单点更新 区间查询)
HDU.1166 敌兵布阵 (线段树 单点更新 区间查询) 题意分析 加深理解,重写一遍 代码总览 #include <bits/stdc++.h> #define nmax 100000 ...
- hdu 1166 敌兵布阵 线段树 点更新
// hdu 1166 敌兵布阵 线段树 点更新 // // 这道题裸的线段树的点更新,直接写就能够了 // // 一直以来想要进线段树的坑,结果一直没有跳进去,今天算是跳进去吧, // 尽管十分简单 ...
- 【线段树I:母题】hdu 1166 敌兵布阵
[线段树I:母题]hdu 1166 敌兵布阵 题目链接:hdu 1166 敌兵布阵 题目大意 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又開始忙乎了.A国在海 ...
- HDOJ(HDU).1166 敌兵布阵 (ST 单点更新 区间求和)
HDOJ(HDU).1166 敌兵布阵 (ST 单点更新 区间求和) 点我挑战题目 题意分析 根据数据范围和询问次数的规模,应该不难看出是个数据结构题目,题目比较裸.题中包括以下命令: 1.Add(i ...
- HDU 1166 敌兵布阵(线段树单点更新,板子题)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- hdu 1166 敌兵布阵 (线段树单点更新)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 1166 敌兵布阵(线段树单点更新)
敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ...
- HDU 1166 敌兵布阵(线段树单点更新,区间查询)
描述 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况 ...
- HDU 1754 线段树 单点跟新 HDU 1166 敌兵布阵 线段树 区间求和
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
随机推荐
- HTML5 <template>
http://www.zhangxinxu.com/wordpress/2014/07/hello-html5-template-tag/
- 狂配Nginx
一 .Nginx虚拟主机配置( 基于不同的域名,跳转到不同的项目) 1.基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站 2.基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部 ...
- 实用jQuery代码片段
maco精选的一些jQuery代码,也许你从中可以举一反三[代码] [JavaScript]代码001<p>002 <h3><span >★ 使用jQuery ...
- CISCO-从TFTP上上传/下载配置文件
1.下载配置文件到TFTP服务器: 2.上传配置文件到路由器
- java虚拟机内存溢出和泄漏实例
测试参数设置: 1.循环调用new A()实现堆溢出,java.lang.OutOfMemoryError: Java heap space, 虚拟机参数:-Xms1M -Xmx1M -XX:+Hea ...
- redis-cluster的实例动态调整内存
当redis.conf中的最大内存配置为10G的时候,恰好程序已经写满了,但是物理主机是有内存的, 此时可以通过config set xxxx xxxx 来设置实例的内存大小,而不需要重启实例. 获取 ...
- http 和 ajax 的关系
经常听到有人混淆两者之间的基本概念,认为只是毫无关系的两种东西. 其实ajax也属于http请求,只不过是http一共有两种请求,一种是同步,一种是异步当然也可以同步那就是ajax. 总所周知hhtp ...
- disablescroll
页面的设置 disablescroll:true(需要配合设置 enablePullDownRefresh:false ) 可以实现页面上下不能滑动 另一种实现方法: 设置页面的根元素 绝对定位, p ...
- wampServer 设置
设置端口 打开 C:\wamp\bin\apache\apache2.4.9\conf\httpd.conf 文件 找到“Listen 80”和“ServerName localhost:80”,紧接 ...
- SQL编程题-----1
首先,题目给出这个数据库表格 要求写出SQL语句使之变成如下表格 解决方法: SELECT t1.Rq,t1.胜,t2.负 FROM //t1和t2是自己命的新表格的名字 (SELEC ...