线段树模板(hdu1166)
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <math.h>
#include <bitset>
#include <vector>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#define MAXN 1010100
#define LL long long
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define ll __int64
#define INF 0x7fffffff
#define cs(s) freopen(s,"r",stdin)
#define mem(x) memset(x,0,sizeof(x))
#define PI acos(-1)
#define eps 1e-10
using namespace std;
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a/gcd(a,b)*b;}
LL powmod(LL a,LL b,LL MOD){LL ans=1;while(b){if(b%2)ans=ans*a%MOD;a=a*a%MOD;b/=2;}return ans;}
//head
const int maxn=5e4+1;
string gao;
int tree[maxn<<2],a[maxn<<2],t,n;
void build(int now,int l,int r){
if(l==r){tree[now]=a[l];return;}//叶子节点直接赋值
int mid=(l+r)/2;
build(now<<1,l,mid);
build(now<<1|1,mid+1,r);
tree[now]=tree[now<<1]+tree[now<<1|1];//向下传递
}
void update(int now,int l,int r,int val,int ne){
if(l==ne&&l==r){
tree[now]+=val;
return;
}else{
int mid=(l+r)/2;
if(ne<=mid)update(now<<1,l,mid,val,ne);
if(ne>mid)update(now<<1|1,mid+1,r,val,ne);
tree[now]=tree[now<<1]+tree[now<<1|1];
}
}
LL que(int now,int l,int r,int dx,int dy){
if(l>=dx&&r<=dy)return tree[now];
else{
int mid=(l+r)/2;
LL sum=0;
if(dx<=mid)sum+=que(now<<1,l,mid,dx,dy);
if(dy>mid) sum+=que(now<<1|1,mid+1,r,dx,dy);
return sum;
}
}
int main(){
ios::sync_with_stdio(false);
cin>>t;
for(int test=1;test<=t;test++){
mem(tree);
cout<<"Case "<<test<<':'<<endl;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
build(1,1,n);
while(1){
cin>>gao;
if(gao=="End")break;
if(gao[0]=='Q'){
int l,r;
cin>>l>>r;
cout<<que(1,1,n,l,r)<<endl;
}else if(gao[0]=='S'){//减
int p,val;
cin>>p>>val;
update(1,1,n,-val,p);
}else{//加
int p,val;
cin>>p>>val;
update(1,1,n,val,p);
}
}
}
return 0;
}
线段树模板(hdu1166)的更多相关文章
- HDU1166:敌兵布阵(线段树模板)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- HDU 1166 线段树模板&树状数组模板
HDU1166 上好的线段树模板&&树状数组模板 自己写的第一棵线段树&第一棵树状数组 莫名的兴奋 线段树: #include <cstdio> using nam ...
- [AHOI 2009] 维护序列(线段树模板题)
1798: [Ahoi2009]Seq 维护序列seq Time Limit: 30 Sec Memory Limit: 64 MB Description 老师交给小可可一个维护数列的任务,现在小 ...
- hdu1754 I hate it线段树模板 区间最值查询
题目链接:这道题是线段树,树状数组最基础的问题 两种分类方式:按照更新对象和查询对象 单点更新,区间查询; 区间更新,单点查询; 按照整体维护的对象: 维护前缀和; 维护区间最值. 线段树模板代码 # ...
- P3373 线段树模板
好,这是一个线段树模板. #include <cstdio> using namespace std; ; long long int sum[N],tag1[N],tag2[N],mo; ...
- 线段树模板hdu 1754:I Hate It
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- UESTC - 1057 秋实大哥与花 线段树模板题
http://acm.uestc.edu.cn/#/problem/show/1057 题意:给你n个数,q次操作,每次在l,r上加上x并输出此区间的sum 题解:线段树模板, #define _CR ...
- POJ 3468 A Simple Problem with Integers(线段树模板之区间增减更新 区间求和查询)
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 140120 ...
- hdu 4819 二维线段树模板
/* HDU 4819 Mosaic 题意:查询某个矩形内的最大最小值, 修改矩形内某点的值为该矩形(Mi+MA)/2; 二维线段树模板: 区间最值,单点更新. */ #include<bits ...
- POJ3468:A Simple Problem with Integers(线段树模板)
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 149972 ...
随机推荐
- java ArrayList去重
对list集合中的重复值进行处理,大部分是采用两种方法, 一种是用遍历list集合判断后赋给另一个list集合, 另一种是用赋给set集合再返回给list集合. 方法1:set集合去重,不打乱顺序 L ...
- HDU3032 Nim or not Nim?
解:使用sg函数打表发现规律,然后暴力异或起来即可. #include <bits/stdc++.h> typedef long long LL; ; int a[N]; inline L ...
- margin纵向重叠
速记: 如p的纵向 margin 是 16px,那么两个之间纵向的距离是多少?-- 按常理来说应该是 16 + 16 = 32px,但是答案仍然是 16px. 因为纵向的 margin 是会重叠的,如 ...
- c#两个listbox怎么把内容添加到另外个listbox
https://bbs.csdn.net/topics/392156324?page=1 public partial class Form1 : Form { public ...
- java抽象类和抽象方法
首先应该明确一点的是,抽象方法必须定义在抽象类中. 先看一个抽象类的定义: public abstract class Animal { public abstract void eat(); pub ...
- 【清北学堂2018-刷题冲刺】Contest 7
Task 1:小奇采药 [问题描述] 小奇是只天资聪颖的喵,他的梦想是成为世界上最伟⼤的医师. 为此,他想拜喵星球最有威望的医师为师. 医师为了判断他的资质,给他出了⼀个难题. 医师把他带到⼀ ...
- 关键字(7):属性的增删改add,drop,modify
新建一张表: )); 注意:新建表时,表里面至少要有一个字段 删除整张表: drop table nac_user.a_bt; 增加表的一个属性: ) default('M') 新增外键 ...
- QImage与cv::Mat转换;
QImage主要格式有QImage::Format_RGB32, QImage::Format_RGB888, QImage::Format_Index8, 不同的格式有不同的排布: 格式部分可以参考 ...
- python bytes类型去除尾部字节
by = b'\x01\x02' print(by) by = by.rstrip() print(by) by = by.rstrip(chr(2).encode()) print(by) b'\x ...
- chrome截图全网页
1.F12 2.ctrl+shift+p 3.输入:capture 4.选择Capture full size screenshot