题意:给出n个数,a1,a2,a3,,,,,an,再给出一些操作

add i  j 表示给第i个节点增加j

sub i  j 表示给第i个节点减少j

query i j 表示询问第i个节点到第j个节点的和

套的别人的模板写的---还是要再多自己写写的说-------

 #include<iostream>
#include<cstdio>
#include<cstring>
#include <cmath>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<algorithm>
using namespace std; typedef long long LL;
const int INF = (<<)-;
const int mod=;
const int maxn=; int a[maxn]; struct node{
int l,r;
int s;
}; node tree[*maxn]; int calc(int x,int y) { return x + y;} void build_tree(int i,int l,int r){
if(l==r){
tree[i].l=l;
tree[i].r=r;
tree[i].s=a[l];
return;
}
int mid=(l+r)/;
build_tree(*i,l,mid);
build_tree(*i+,mid+,r);
tree[i].l=l;
tree[i].r=r;
tree[i].s=calc(tree[*i].s,tree[*i+].s);
} void update1(int i,int s,int w){
if(tree[i].l==tree[i].r){
tree[i].s+=w;
return;
}
int mid=(tree[i].l + tree[i].r)/;
if(s<=mid) update1(*i,s,w);
else update1(*i+,s,w); tree[i].s=calc(tree[*i].s,tree[*i+].s);
} void update2(int i,int s,int w){
if(tree[i].l==tree[i].r){
tree[i].s-=w;
return;
}
int mid=(tree[i].l + tree[i].r)/;
if(s<=mid) update2(*i,s,w);
else update2(*i+,s,w); tree[i].s=calc(tree[*i].s,tree[*i+].s);
} int sum(int i,int l,int r){
// printf("tree[%d].s=%d\n",i,tree[i].s);
if(tree[i].l==l&&tree[i].r==r){
return tree[i].s;
}
else{
int mid=(tree[i].l+tree[i].r)/;
if(r<=mid) return sum(*i,l,r);
if(l>mid) return sum(*i+,l,r); return calc(sum(*i,l,mid),sum(*i+,mid+,r));
}
} int main(){
int T;
scanf("%d",&T);
int kase=;
while(T--){
int n;
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&a[i]); build_tree(,,n); char s[];
int x,y;
printf("Case %d:\n",++kase); while(scanf("%s",s)!=EOF){ if(s[] == 'E') break;
if(s[] == 'A'){
scanf("%d %d",&x,&y);
update1(,x,y);
}
if(s[]=='S'){
scanf("%d %d",&x,&y);
update2(,x,y);
}
if(s[] == 'Q'){
scanf("%d %d",&x,&y);
printf("%d\n",sum(,x,y));
}
}
}
return ;
}

HDU 1166 敌兵布阵【线段树 单点更新】的更多相关文章

  1. HDU.1166 敌兵布阵 (线段树 单点更新 区间查询)

    HDU.1166 敌兵布阵 (线段树 单点更新 区间查询) 题意分析 加深理解,重写一遍 代码总览 #include <bits/stdc++.h> #define nmax 100000 ...

  2. HDU 1166 敌兵布阵(线段树单点更新,板子题)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  3. HDU 1166 敌兵布阵(线段树单点更新)

    敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ...

  4. HDU 1166 敌兵布阵(线段树单点更新,区间查询)

    描述 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况 ...

  5. HDU 1166 敌兵布阵 线段树单点更新求和

    题目链接 中文题,线段树入门题,单点更新求和,建一棵树就可以了. #include <iostream> #include <cstdio> #include <cmat ...

  6. 【原创】hdu 1166 敌兵布阵(线段树→单点更新,区间查询)

    学习线段树的第三天...真的是没学点啥好的,又是一道水题,纯模板,我个人觉得我的线段树模板还是不错的(毕竟我第一天相当于啥都没学...找了一整天模板,对比了好几个,终于找到了自己喜欢的类型),中文题目 ...

  7. hdu 1166 敌兵布阵 线段树 点更新

    // hdu 1166 敌兵布阵 线段树 点更新 // // 这道题裸的线段树的点更新,直接写就能够了 // // 一直以来想要进线段树的坑,结果一直没有跳进去,今天算是跳进去吧, // 尽管十分简单 ...

  8. HDU 1166 敌兵布阵 <线段树 单点修改 区间查询>

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  9. HDU 1754 线段树 单点跟新 HDU 1166 敌兵布阵 线段树 区间求和

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  10. hdu 1166 敌兵布阵 线段树区间修改、查询、单点修改 板子题

    题目链接:敌兵布阵 题目: C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视 ...

随机推荐

  1. javascript在html直接传值

    function getUrlParam(url, name) { var pattern = new RegExp("[?&]" + name + "\=([^ ...

  2. radio判断是否为空

    isMarital = $('[name="isMarital"]:checked').val(); isMarital == null //当radio选择为空的时候 isMar ...

  3. (转)GPT磁盘与MBR磁盘区别

    摘要:   Windows 2008磁盘管理器中,在磁盘标签处右击鼠标,随磁盘属性的不同会出现“转换到动态磁盘”,“转换到基本磁盘”“转换成GPT磁盘”,“转换成MBR磁盘”等选项,在此做简单介绍.部 ...

  4. ajax第二天学习

    post方式发送请求 要首先设置请求头(参数设置为ajax.setRequestHeader("content-type","application/x-www-form ...

  5. 一些css兼容问题

    由于各浏览器的不同,会存在一些兼容问题,特别是兼容IE6/7/8 下面简单介绍了一些解决方法,更多问题可以访问 W3help.org来查看. 可以通过js获取浏览器版本 document.body.i ...

  6. [BZOJ1322]Destroying The Graph

    题目大意:有一张有向图,对于每个点,有两种操作:1. 删掉它的所有入边2. 删掉它的所有出边对每个点的每个操作均有不同的价值.求使得图上没有边的最小价值.解题思路:考虑把点拆成入点和出点,然后就是二分 ...

  7. VUE:模板语法(小白自学)

    VUE:模板语法 一:何为声明式 安装规定的语法,去实现一些效果(不需要管流程). 二:模板语法 <!DOCTYPE html> <html> <head> < ...

  8. 20130910.Windows上安装和配置MongoDB

    官方文档:http://docs.mongodb.org/manual/tutorial/ 1.下载软件 http://www.mongodb.org/downloads 2.解压 解压后进入bin目 ...

  9. HTML5常见的面试题,基础知识点

                                                                                    HTML5常见的面试题 一.HTML 常 ...

  10. MgdDbg工具

    ArxDbg是可以查看AutoCAD内部数据结构的工具,可惜是C++的.从网上找到了一个.NET版本的MgdDbg,实现的功能与C++版本的差不多. 1.运行程序,你只要右键点击AutoCAD窗口,在 ...