给定区间长度,然后给两个操作,单点增加值和单点减值,询问一个区间的人数和;(水)

代码如下:

 /*
写的第一个线段树,丑;
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef struct
{
int l,r;
int value;
}tr[];//长度是区间长度的四倍;
int n,a[]={},ans=;
void build(int i,int l,int r)//建树
{
tr[i].l=l;
tr[i].r=r;
if(l==r)
{
tr[i].value=a[l];
return ;
}
build(i*,l,(l+r)/);
build(i*+,(l+r)/+,r);
tr[i].value=tr[i*].value+tr[i*+].value;
}
void ADD(int i,int l,int x)//区间加值
{
if(tr[i].l==l&&tr[i].r==l)
{
tr[i].value+=x;
return ;
}
int t=i<<;
if(l<=tr[t].r)
ADD(t,l,x);
t+=;
if(l>=tr[t].l)
ADD(t,l,x);
tr[i].value=tr[i<<].value+tr[(i<<)+].value;
}
void SUB(int i,int l,int x)//区间减值
{
if(tr[i].l==l&&tr[i].r==l)
{
tr[i].value-=x;
return ;
}
int t=i<<;
if(l<=tr[t].r)
SUB(t,l,x);
t+=;
if(l>=tr[t].l)
SUB(t,l,x);
tr[i].value=tr[i<<].value+tr[(i<<)+].value;
}
void QUERY(int i,int l,int r)//区间查询寻;
{
if(tr[i].l==l&&tr[i].r==r)
{
ans+=tr[i].value;
return ;
}
i=i<<;
if(l<=tr[i].r)
{
if(r<=tr[i].r)
QUERY(i,l,r);
else
QUERY(i,l,tr[i].r);
}
i+=;
if(r>=tr[i].l)
{
if(l>=tr[i].l)
QUERY(i,l,r);
else
QUERY(i,tr[i].l,r);
}
}
int main()
{
int T,t=;
cin>>T;
while(T--)
{
memset(a,,sizeof(a));
ans=;
cin>>n;
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
}
printf("Case %d:\n",t++);
build(,,n);
char s[];
int x1,x2;
scanf("%s",s);
int k=;
while(s[]!='E')
{
scanf("%d%d",&x1,&x2);
if(s[]=='A')
ADD(,x1,x2);
else if(s[]=='S')
SUB(,x1,x2);
else if(s[]=='Q')
{
QUERY(,x1,x2);
printf("%d\n",ans);
ans=;
}
scanf("%s",s);
}
}
return ;
}

kb-07专题--线段树-01-单点修改,区间查和的更多相关文章

  1. hdu 1754 线段树(Max+单点修改)

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

  2. hdu 1166 线段树(sum+单点修改)

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

  3. poj3171 Cleaning Shifts【线段树(单点修改区间查询)】【DP】

    Cleaning Shifts Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4422   Accepted: 1482 D ...

  4. I Hate It:线段树:单点修改+区间查询

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

  5. 【线段树(单点修改,区间求和)】HDU1166 - 敌军布阵

    hdu1166 敌兵布阵,单点修改,区间求和. [ATTENTION]MAXN要开成节点数的4倍,开得不够会提示TLE. #include<iostream> #include<cs ...

  6. hdu 1754 线段树(单点替换 区间最值)

    Sample Input5 61 2 3 4 5Q 1 5 //1-5结点的最大值U 3 6 //将点3的数值换成6Q 3 4Q 4 5U 2 9Q 1 5 Sample Output5659 # i ...

  7. hdu 1166 线段树(单点增减 区间求和)

    Sample Input1101 2 3 4 5 6 7 8 9 10Query 1 3Add 3 6Query 2 7Sub 10 2Add 6 3Query 3 10End Sample Outp ...

  8. HDU 1754 I Hate It(线段树之单点更新 区间最值查询)

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

  9. hdu 1754 I Hate It(线段树之 单点更新+区间最值)

    I Hate It                                                                             Time Limit: 90 ...

随机推荐

  1. 记一次RabbitMq 安装和配置坑

    记一次RabbitMq 安装和配置坑 正常情况下安装 先安装erl ,在安装rabbitmq 这个在windows下的安装没什么技巧,按照默认一路下一步就ok.安装好后可以到cmd测试是否安装好. 测 ...

  2. 使用脚本在Linux服务器上自动安装Kubernetes的包管理器Helm

    Helm之于Kubernetes好比yum之于Red Hat Enterprise Linux,或者apt-get之于Ubuntu. Helm是由helm CLI和Tiller组成,是典型的Clien ...

  3. codeforce Gym 100500F Door Lock (二分)

    根据题意略推一下,其实就是问你满足(a*(a+1))/2 < m <= ((a+1)*a(a+2))/2的a和m-(a*(a+1))/2 -1是多少. 二分求解就行了 #include&l ...

  4. Codeforces Round #313 (Div. 2) A.B,C,D,E Currency System in Geraldion Gerald is into Art Gerald's Hexagon Equivalent Strings

    A题,超级大水题,根据有没有1输出-1和1就行了.我沙茶,把%d写成了%n. B题,也水,两个矩形的长和宽分别加一下,剩下的两个取大的那个,看看是否框得下. C题,其实也很简单,题目保证了小三角形是正 ...

  5. 使用EventLog组件保存Windows系统日志

    实现效果: 知识运用: EventLog类的CreateEventSource方法 //用于建立一个应用程序  使用指定的Sourc作为向本机上的日志中写入日志项的有效事件源 CreateEventS ...

  6. Oracle Real Application Clusters (RAC)

    Oracle Real Application Clusters — 概述 包含 Oracle Real Application Clusters (RAC) 选件的 Oracle 数据库允许依托一组 ...

  7. MYSQL存储过程,函数,光标

    存储过程 MySQL中,创建存储过程的基本形式如下: CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] ro ...

  8. 预防cdn链接失效,无缝切换本地文件

    如今的前端项目追求的不仅仅是能用能看的程度,而是愈发追求项目的性能,对用户体验的影响.而现在的开发工具在性能优化方面也替我们做很大一部分的工作,想必大家对CDN的使用都是轻车熟路了,但是大家有没有考虑 ...

  9. ipvsadm分发MySQL读请求

    在MySQL的部署场景中,经常使用HAproxy和ipvs来作为读请求转发的网关.ipvs的好处在于本身不需要daemon的方式来运行,而是直接作为kernel的服务来提供:当ipvs和应用程序服务器 ...

  10. angular5自适应窗口大小

    import {AfterViewInit, Directive, ElementRef, HostBinding, HostListener, Inject, Input, Renderer2} f ...