树状数组的玄学功效
来源:互联网 发布:java 数字验证码识别 编辑:程序博客网 时间:2024/04/29 23:36
坑
1.单点修改区间最值
详情请见
->blog.csdn.net/u010598215/article/details/48206959
裸题模板:HDU1745
#include<iostream>#include<cstring>#include<cstdlib>#include<cstdio>#include<algorithm>using namespace std;const int maxn=200005;int n,q;int h[maxn],s[maxn];void change(int x){ while(x<=n) { int lowbit=x&-x; h[x]=s[x]; for(int i=1;i<lowbit;i<<=1) h[x]=max(h[x],h[x-i]); x+=lowbit; }}int query(int x,int y){ int res=0; while(x<=y) { res=max(res,s[y]); y--; for(;y-(y&-y)>=x;y-=y&-y) res=max(res,h[y]); } return res;}int main(){ while(~scanf("%d%d",&n,&q)) { memset(h+1,0,sizeof(int)*n); for(int i=1;i<=n;i++) scanf("%d",s+i),change(i); while(q--) { char op[2];int a,b; scanf("%s%d%d",op,&a,&b); if(op[0]=='U') { s[a]=b; change(a); } else printf("%d\n",query(a,b)); } } return 0;}
2.区间修改+区间求和
详情请见->http://m.blog.csdn.net/blackjack_/article/details/74997479
模板裸题(luogu p3372):
#include<iostream>#include<cstring>#include<cstdlib>#include<cstdio>#include<algorithm>using namespace std;const int maxn=100005;int n,q;long long c[2][maxn];long long read(){ long long x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9')f=(ch=='-'?-1:1),ch=getchar(); while(ch<='9'&&ch>='0')x=x*10+ch-'0',ch=getchar(); return x*f;}void add(long long *tr,int pos,long long val){ for(int i=pos;i<=n;i+=i&-i) tr[i]+=val;}void add(int l,int r,long long val){ add(c[0],l,val); add(c[0],r+1,-val); add(c[1],l,1LL*(l-1)*val); add(c[1],r+1,1LL*-r*val);}long long query(long long *tr,int pos){ long long res=0; for(int i=pos;i;i-=i&-i) res+=tr[i]; return res;}long long query(int l,int r){ return 1LL*r*query(c[0],r)-query(c[1],r)-1LL*(l-1)*query(c[0],l-1)+query(c[1],l-1);}int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) add(i,i,read()); scanf("%d",&q); while(q--) { int op,d1,d2; long long d; op=read(); if(op==1) { d1=read(),d2=read(),d=read(); add(d1,d2,d); } else { d1=read(); printf("%lld\n",query(d1,d1)); } }}
阅读全文
0 0
- 树状数组的玄学功效
- 排序 纪中 1386 树状数组/玄学
- 玄学
- 树状数组的学习
- 树状数组的概念
- 树状数组的理解
- 树状数组的模板;
- 树状数组的模版
- -----树状数组的理解
- 树状数组的整理
- 树状数组的应用
- 树状数组的应用
- 树状数组的模板
- 树状数组的建立
- [BZOJ2754] 喵星球上的点名 - AC自动机/后缀数组/后缀自动机/玄学♂暴力
- 水晶的功效完整版
- 水晶的功效完整版
- 水晶的功效
- 树莓派7寸官方屏修改分辨率
- 状态模式(State Pattern)——事物状态
- cuda dynamic parallelism-CUDA动态并行
- 数组的逆序
- UVALive
- 树状数组的玄学功效
- 【知了堂学习笔记】SQL查询总结(1)
- 火车车厢重新排列问题
- 计蒜客-计数问题
- JavaScript忍者秘籍笔记03之正则表达式
- 学习中记扎
- Redis数据结构
- 二叉树的基本操作
- Spring嵌套事物,事物的传播之REQUIRES_NEW