敌兵布阵---hud1166(线段树或者树状数组模板)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166
线段树中对某一点的值进行改变;
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std; #define N 50010
#define Lson r<<1
#define Rson r<<1|1 struct SegmentTree
{
int L, R, k, sum;
int Mid()
{
return (L+R)>>;
}
int len()
{
return R-L+;
}
}a[N<<]; void BuildTree(int r,int L,int R)
{
a[r].L = L; a[r].R = R; a[r].k = ;
if(L == R)
{
scanf("%d",&a[r].sum);
return ;
} BuildTree(Lson, L, a[r].Mid());
BuildTree(Rson, a[r].Mid()+, R); a[r].sum = a[Lson].sum + a[Rson].sum;
}
int Query(int r, int L, int R)
{
if(a[r].R == R && a[r].L == L)
return a[r].sum;
if(L>a[r].Mid())
return Query(Rson, L, R);
else if(R <= a[r].Mid())
return Query(Lson, L, R);
else
{
int sum1=Query(Lson, L, a[r].Mid());
int sum2=Query(Rson, a[r].Mid()+, R);
return sum1 + sum2;
}
}
void Update(int r, int p, int x)
{
if(a[r].L == p && a[r].R == p)
{
a[r].sum += x;
return ;
} if(p<=a[r].Mid())
Update(Lson, p, x);
else
Update(Rson, p, x); a[r].sum = a[Rson].sum + a[Lson].sum;
}
int main()
{
int t=, T, n, L, R, p, x;
char s[];
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
BuildTree(, , n);
printf("Case %d:\n", t++);
while(scanf("%s", s))
{
if(s[] == 'E')break;
else if(s[] == 'Q')
{
scanf("%d %d", &L, &R);
printf("%d\n", Query(, L, R));
}
else if(s[] == 'A')
{
scanf("%d%d", &p,&x);
Update(, p, x);
}
else if(s[] == 'S')
{
scanf("%d %d", &p, &x);
Update(, p, -x);//减去一个数可以看做加一个负数;
}
}
}
return ;
}
线段树
关于树状数组:参考链接
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<iostream> using namespace std; #define N 50500
#define met(a, b) memset(a, b, sizeof(a))
int Tree[N], n; int lowbit(int x)
{
return x&(-x);
} void Update(int pos, int num)
{
while(pos<=n)
{
Tree[pos]+=num;
pos += lowbit(pos);
}
} int GetSum(int pos)
{
int s=;
while(pos)
{
s += Tree[pos];
pos -= lowbit(pos);
}
return s;
}
int main()
{
int T, t=;
scanf("%d", &T);
while(T--)
{
met(Tree, );
int num, pos, x, y;
scanf("%d", &n);
for(int i=; i<=n; i++)
{
scanf("%d", &num);
Update(i, num);
}
printf("Case %d:\n", t++);
char s[];
while(scanf("%s", s), s[]!='E')
{
if(s[]=='A')
{
scanf("%d %d", &pos, &num);
Update(pos, num);
}
if(s[]=='S')
{
scanf("%d %d", &pos, &num);
Update(pos, -num);
}
if(s[]=='Q')
{
scanf("%d %d", &x, &y);
int ans = GetSum(y)-GetSum(x-);
printf("%d\n", ans);
}
}
}
return ;
}
树状数组
敌兵布阵---hud1166(线段树或者树状数组模板)的更多相关文章
- HDU 1611 敌兵布阵 / HRBUST 1794 敌兵布阵(线段树)
		HDU 1611 敌兵布阵 / HRBUST 1794 敌兵布阵(线段树) Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A ... 
- hdu acm 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) Memory Limit: 65536/32768 K (Java/Others) Total Submi ... 
- HDUOJ----1166敌兵布阵(线段树单点更新)
		敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ... 
- HDU1166 敌兵布阵_线段树
		敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ... 
- HDU1166:敌兵布阵(线段树模板)
		敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ... 
- hdu 1166敌兵布阵(线段树)
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) M ... 
- HDU 1166 敌兵布阵 【线段树-点修改--计算区间和】
		敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ... 
- hdu 1166 敌兵布阵 (线段树单点更新)
		敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) ... 
- HUD 1166:敌兵布阵(线段树 or 树状数组)
		敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Des ... 
随机推荐
- Docker 仓库管理
			仓库 ( registry ) 是一个用来存放镜像的地方,当我们执行 docker pull centos 去拉取 centos 镜像时,默认是从 Docker Hub 这个公共仓库来拉取的: 对于企 ... 
- PHP 使用 MongoDB
			PHP 想要往 MongoDB 里增删查改数据,需要先安装 mongodb 或 mongo 扩展模块,一般两个都装上: cd /usr/local/src/ wget https://pecl.php ... 
- 第四篇:MapReduce计算模型
			前言 本文讲解Hadoop中的编程及计算模型MapReduce,并将给出在MapReduce模型下编程的基本套路. 模型架构 在Hadoop中,用于执行计算任务(MapReduce任务)的机器有两个角 ... 
- C++ template —— 模板中的名称(三)
			第9章 模板中的名称------------------------------------------------------------------------------------------ ... 
- luanet性能测试
			测试环境 intel-i5 双核 2.53HZ 服务器客户端均在本机运行 测试内容:echo回射,每个包的字节数在20字节内 luanet 连接数 每秒回射数 1 19,000/s 10 12,500 ... 
- 日记整理---->2017-05-14
			学习一下知识吧,好久没有写博客了.如果他总为别人撑伞,你又何苦非为他等在雨中. 学习的知识内容 一.关于base64的图片问题 byte[] decode = Base64.base64ToByteA ... 
- H.264 White Paper学习笔记(二)帧内预测
			为什么要有帧内预测?因为一般来说,对于一幅图像,相邻的两个像素的亮度和色度值之间经常是比较接近的,也就是颜色是逐渐变化的,不会一下子突变成完全不一样的颜色.而进行视频编码,目的就是利用这个相关性,来进 ... 
- Elasticsearch学习之head插件安装
			通过elasticseach自带的plugin命令 elasticsearch/bin/plugin -install mobz/elasticsearch-head 如下图: 2. zip包安装 ... 
- Google浏览器清除缓存快捷键
			1.CTRL+SHIFT+DEL:直接进入“清除浏览数据”页面,包括清除浏览历史记录.清空缓存.删除Cookie等. 2.chrome浏览器F12中 ctrl+p 可以定位文件 
- Visual Studio 2013附加进程调试IE加载的ActiveX Control无效解决方法
			默认Attach to选择了Automatically determine the type of code to debug,显示Native Code.但附加进程到iexplore.exe断点无法 ... 
