HDU 1166 敌兵布阵 线段树区间求和 更改
水
#include<iostream>
#include<string>
#include<algorithm>
#include<cstdlib>
#include<cstdio>
#include<set>
#include<map>
#include<vector>
#include<cstring>
#include<stack>
#include<cmath>
#include<queue>
#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define ll long long
#define clc(a,b) memset(a,b,sizeof(a))
const int maxn=; int ans;
struct node
{
int left,right,sum;
int mid()
{
return (left+right)>>;
}
}tree[maxn*]; void build_tree(int l,int r,int o)
{
tree[o].left=l;
tree[o].right=r;
if(l==r)
{
scanf("%d",&tree[o].sum);
return ;
}
int mid=tree[o].mid();
build_tree(l,mid,o<<);
build_tree(mid+,r,o<<|);
tree[o].sum=tree[o<<].sum+tree[o<<|].sum;
} void query(int l,int r,int o,int L,int R)
{
if(L<=l&&r<=R)
{
ans+=tree[o].sum;
return ;
}
int mid=tree[o].mid();
if(R<=mid)
query(l,mid,o<<,L,R);
else if(L>mid)
query(mid+,r,o<<|,L,R);
else
{
query(l,mid,o<<,L,R);
query(mid+,r,o<<|,L,R);
}
} void update(int l,int r,int o,int pos,int add)
{
if(l==r)
{
tree[o].sum+=add;
return ;
}
int mid=tree[o].mid();
if(pos<=mid)
{
update(l,mid,o<<,pos,add);
}
else
update(mid+,r,o<<|,pos,add);
tree[o].sum=tree[o<<].sum+tree[o<<|].sum;
} int main()
{
int t,n,cnt;
int a,b;
char str[];
cnt=;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
build_tree(,n,);
printf("Case %d:\n",cnt++);
while(scanf("%s",str))
{
if(str[]=='E')
break;
scanf("%d%d",&a,&b);
if(str[]=='Q')
{
ans=;
query(,n,,a,b);
printf("%d\n",ans);
}
else if(str[]=='A')
update(,n,,a,b);
else
update(,n,,a,-b);
}
}
return ;
}
HDU 1166 敌兵布阵 线段树区间求和 更改的更多相关文章
- 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的任务就是要监视 ...
- hdu 1116 敌兵布阵 线段树 区间求和 单点更新
线段树的基本知识可以先google一下,不是很难理解 线段树功能:update:单点增减 query:区间求和 #include <bits/stdc++.h> #define lson ...
- HDU.1166 敌兵布阵 (线段树 单点更新 区间查询)
HDU.1166 敌兵布阵 (线段树 单点更新 区间查询) 题意分析 加深理解,重写一遍 代码总览 #include <bits/stdc++.h> #define nmax 100000 ...
- hdu 1166 敌兵布阵 线段树 点更新
// hdu 1166 敌兵布阵 线段树 点更新 // // 这道题裸的线段树的点更新,直接写就能够了 // // 一直以来想要进线段树的坑,结果一直没有跳进去,今天算是跳进去吧, // 尽管十分简单 ...
- 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 敌兵布阵 <线段树 单点修改 区间查询>
敌兵布阵 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) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
随机推荐
- 关于window.location不跳转的问题
今天在码代码的时候遇到个问题:html里采用onclick事件来实现window.location = url的跳转,在内嵌元素上又加上了href="javascrit:;"的属性 ...
- 补充:学会Twitter Bootstrap不再难
博客园的兄弟姐妹们很给力,自从这篇文章写出后,有人可能会对2.x版本升级到3.x版本的区别有些好奇和模糊.现在将官方给出的说明贴上去: 从2.x升级到3.0版本 Bootstrap 3并不向后兼容Bo ...
- [Linux/Ubuntu] vi/vim 使用方法讲解(转载)
转自:http://www.cnblogs.com/emanlee/archive/2011/11/10/2243930.html vi/vim 基本使用方法 vi编辑器是所有Unix及Linux系统 ...
- linq query, using int.parse to convert varchar to int while orderby
var t = from x in context.NewsLetterItem.ToList() //add .ToList at this place where x.APPId == appid ...
- UGUI-组件
2015-06-22 UGUI 组件 Canvas 画布 The Canvas component represents the abstract space in which the UI is l ...
- Java装饰设计模式的例子
这里给出一个顾客购买咖啡的例子.其中咖啡可以加冰(2元),加巧克力(4元). 下面是面向对象中装饰模式的解决方案. /** * Created with IntelliJ IDEA. * User: ...
- Error -27791: Server xx has shut down the connection prematurely
最近在进行一次性能测试中遇到一个问题,并发较大的时候会出现LR出现Error -27791: Server xx has shut down the connection prematurely的ER ...
- JavaScript注入漏洞的原理及防范
初次接触: 初次接触JavaScript注入漏洞后,如果不对这种漏洞的作用机理仔细分析并提取出其发生的某种模式,你就不能做到快速的发现项目中可能存在的所有注入风险并在代码中防范. 发生模式: Java ...
- Codeforces 258 Div2
A题,n*m根木棍,相交放置,轮流取走相交的两根,最后谁不能行动,则输掉. min(n,m)&1 为1则先取者赢. B题,给定一个长度为n,且各不相同的数组,问能否通过交换连续一段L....R ...
- UVA 10651 Pebble Solitaire 状态压缩dp
一开始还在纠结怎么表示一个状态,毕竟是一个串.后来搜了一下题解发现了这里用一个整数的前12位表示转态就好了 ,1~o,0~'-',每个状态用一个数来表示,然后dp写起来就比较方便了. 代码: #inc ...