博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nefuoj 1215 线段树区间更新区间求和
阅读量:4205 次
发布时间:2019-05-26

本文共 1763 字,大约阅读时间需要 5 分钟。

统计序列和

Problem:1215

Time Limit:2000ms

Memory Limit:65535K

Description

给定n个数,你的任务是实现下面的两种操作,S x y把第x个数改成y(y是小于10的9次方的非负整数),M x y计算第x个数到第y个数的和

Input

多组数据,第一行为整数n(1<=n<=200000),接下来n个整数(每个整数都是小于10的9次方的非负整数),接下来有不超过200000的操作,以END结束

Output

对于每一个M操作,输出x到y的和

Sample Input

31 2 3M 1 3S 2 6M 1 3END

Sample Output

6 10 #include 
#include
#include
#include
#include
using namespace std;const int inf=0x3f3f3f3f;const int maxn=200010;long long num[maxn<<2],a[maxn],fans[maxn];void buildtree(int le,int ri,int node){ if(le==ri){ num[node]=a[le]; return ; } int t=(le+ri)>>1; buildtree(le,t,node<<1); buildtree(t+1,ri,node<<1|1); num[node]=num[node<<1]+num[node<<1|1];}void update(int pos,long long val,int le,int ri,int node){ if(le==ri){ num[node]=val; return ; } int t=(le+ri)>>1; if(pos<=t) update(pos,val,le,t,node<<1); else update(pos,val,t+1,ri,node<<1|1); num[node]=num[node<<1]+num[node<<1|1];}long long query(int l,int r,int le,int ri,int node){ if(l<=le&&ri<=r) return num[node]; int t=(le+ri)>>1; long long ans=0; if(l<=t) ans+=query(l,r,le,t,node<<1); if(r>t) ans+=query(l,r,t+1,ri,node<<1|1); return ans;}int main(){ int n,pos,u,v; long long val; char ch[10]; while(scanf("%d",&n)!=-1){ for(int i=1;i<=n;i++) scanf("%lld",&a[i]); buildtree(1,n,1); int k=0; while(scanf("%s",ch)){ if(ch[0]=='E') break; if(ch[0]=='S'){ scanf("%d%lld",&pos,&val); update(pos,val,1,n,1); }else{ scanf("%d%d",&u,&v); fans[k++]=query(u,v,1,n,1); } } for(int i=0;i

转载地址:http://dsali.baihongyu.com/

你可能感兴趣的文章
【Error】Kitematic - VirtualBox is not installed. Please install it via the Docker Toolbox.
查看>>
linux上硬盘重新挂载记录
查看>>
【pwnable.kr】 leg - ARM汇编 PC LR 寄存器 、THUMB汇编
查看>>
【pwnable.kr】 mistake - 运算符优先级
查看>>
wooyun 历史资源汇总
查看>>
【pwnable.kr】 shellshock
查看>>
【pwnable.kr】coin1 二分查找
查看>>
【pwnable.kr】 blackjack - 成为百万富翁(millionaire)
查看>>
【Kernel】漏洞利用技术 Heap Spray检测方法研究
查看>>
kotlin-android-extensions 插件无效问题
查看>>
经典排序算法--Java实现
查看>>
Java中JRadioButton单选按钮分组方法
查看>>
Java图形界面中单选按钮JRadioButton和按钮Button事件处理
查看>>
小练习 - 排序:冒泡、选择、快排
查看>>
操作系统原理:链接与ELF文件
查看>>
从汇编角度看C++类的方法访问类成员的原理
查看>>
操作系统原理:虚拟地址
查看>>
小练习 - 基于链表的栈和队列
查看>>
理论不扎实,编程不会有自己的想法
查看>>
数据库-子查询《mysql子查询的弱点》
查看>>