线段树-单点更新-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 ...
随机推荐
- Algorithm: Euler function
欧拉函数. phi(n)表示比n小的与n互质的数的个数,比如 phi(1) = 1; phi(2) = 1; phi(3) = 2; phi(4) = 2; phi(5) = 4; 性质: 1. 如果 ...
- [RK3288][Android6.0] 调试笔记 --- 软硬键盘同时使用【转】
本文转载自:http://blog.csdn.net/kris_fei/article/details/78748313 Platform: RK3288 OS: Android 6.0 Kernel ...
- [POI 2000] 病毒
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2938 [算法] 首先建出给定字符串集的AC自动机 存在无限长的代码当且仅当 : AC ...
- P2759 奇怪的函数
题目描述 使得 x^x 达到或超过 n 位数字的最小正整数 x 是多少? 输入输出格式 输入格式: 一个正整数 n 输出格式: 使得 x^x 达到 n 位数字的最小正整数 x 输入输出样例 输入样例# ...
- VS2013Z学习java插件
https://visualstudiogallery.msdn.microsoft.com/bc561769-36ff-4a40-9504-e266e8706f93 Bugs and Feature ...
- zynq交叉编译环境设置
环境准备 Vmware 虚拟机:ubuntu14.04 下载安装文件 环境设置 按照上面地址下载 xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin 将das ...
- .NETFramework:StaticValueInjecter
ylbtech-.NETFramework:StaticValueInjecter 1.程序集 Omu.ValueInjecter, Version=3.1.1.0, Culture=neutral, ...
- win7 第一次装 mysql-5.7.16-winx64 ,不知道root 密码,该如何处理?
转载请注明出处:http://blog.csdn.net/qq_26093511/article/details/52851811 ERROR 1045 (28000): Access denied ...
- 【旧文章搬运】关于windbg搜索符号文件的一点说明
原文发表于百度空间,2010-09-07========================================================================== 本来只是打 ...
- seafile文档
https://manual-cn.seafile.com/deploy_windows/download_and_setup_seafile_windows_server.html