hdu1166线段树模板求和
来源:互联网 发布:高程测量软件 编辑:程序博客网 时间:2024/06/05 19:05
线段树模板,就不写其他的了
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;struct node {int l,r,sum; }tr[200005];int a[50001];int i,j,k,m,n,t,x,y; int sum1;void build(int L,int R,int num) {tr[num].l=L; tr[num].r=R; if(L==R)tr[num].sum=a[L]; //已到单点,赋值; else {build(L,(L+R)/2,2*num); //此处是向下向内部递归,注意头尾标号; build((L+R)/2+1,R,2*num+1); tr[num].sum=tr[num*2+1].sum+tr[num*2].sum; //注意,大区间(非单点)的值一定要在递归回来之后赋值,否则小区间或单点的值为零; } } void add(int x,int y,int num) { tr[num].sum+=y; //所有包含点x的大区间都要变化,此处从上往下传递变化; if(tr[num].l==tr[num].r)return ; if(x>(tr[num].l+tr[num].r)/2)add(x,y,num*2+1); if(x<=(tr[num].l+tr[num].r)/2)add(x,y,num*2);} void query(int L,int R,int num) {if(tr[num].l>=L && tr[num].r<=R) {sum1+=tr[num].sum; return ; } int mid=(tr[num].l+tr[num].r)/2; if(mid<L)query(L,R,num*2+1); //要找的线段在当前线段右半部; else if(mid>=R)query(L,R,num*2); //要找的线段在当前线段左半部;else //要找的线段一部分在左,一部分在右,两边都找; {query(L,R,num*2+1); query(L,R,num*2); } }int main() {scanf("%d",&t); k=t; while(t--) {scanf("%d",&n); printf("Case %d:\n",k-t); for(i=1;i<=n;i++)scanf("%d",&a[i]); build(1,n,1); char str[5];while(~scanf("%s",&str)) {if(str[0]=='E')break; scanf("%d%d",&x,&y); sum1=0; if(str[0]=='A')add(x,y,1); if(str[0]=='S')add(x,-y,1); if(str[0]=='Q') {query(x,y,1); printf("%d\n",sum1); } } } return 0; }
0 0
- hdu1166线段树模板求和
- Hdu1166-- 线段树模板
- 线段树模板 hdu1166
- HDU1166 模板线段树
- [hdu1166]线段树模板
- hdu1166(线段树模板)
- hdu1166(线段树模板题)
- HDU1166敌兵布阵-线段树求和
- HDU1166 线段树区间求和,单点更新
- 线段树基本操作模板 hdu1166 hdu1754
- hdu1166 敌兵布阵 (线段树模板)
- hdu1166敌兵布阵(线段树模板)
- HDU1166敌兵布阵 线段树模板题
- hdu1166--敌兵布阵(线段树修改点求和)
- HDU1166 敌兵布阵 线段树区间求和||树状数组
- HDU1166 敌兵布阵 线段树 点修改 求和
- hdu1166 敌兵布阵 线段树单点更新+区间求和
- hdu1166 敌兵布阵(线段树单点更新+区间求和)
- 学习笔记之数据类型和变量2
- 第三章:CSS中的样式选择器
- 遍历Map
- spring-redis配置
- 关于16年2月14日以后上传AppStore出现:Missing iOS Distribution signing identity for...的问题
- hdu1166线段树模板求和
- iOS随机数生成
- json的使用
- java.io.FileNotFoundException-再次踩坑windows编码
- Android中退出多个Activity应用
- 你找bug我出钱
- org.json.JSONException: Unterminated object at character 97 of
- 【MySQL】性能优化之 覆盖索引
- C++ 容器及选用总结