线段树模板
来源:互联网 发布:办公空间设计软件 编辑:程序博客网 时间:2024/04/30 02:00
struct node{ ll l,r,mid,val,mark;}tree[M<<2];ll s[M];void build(ll left,ll right,ll i)//建树{ tree[i].l=left;tree[i].r=right; tree[i].mid=(left+right)>>1;tree[i].mark=0; if(left==right){tree[i].val=s[left]; return;} build(left,tree[i].mid,i*2); build(tree[i].mid+1,right,i*2+1); tree[i].val=tree[i*2].val+tree[i*2+1].val;}void update(int pos,ll val,int i)//点更新{ tree[i].val+=val; if(tree[i].l==tree[i].r)return; if(pos<=tree[i].mid)update(pos,val,i*2); else update(pos,val,i*2+1);}ll query(int left,int right,int i)//点查询{ if(tree[i].l==left&&tree[i].r==right)return tree[i].val; if(right<=tree[i].mid)query(left,right,i*2); else if(left>tree[i].mid)query(left,right,i*2+1); else return query(left,tree[i].mid,i*2)+query(tree[i].mid+1,right,i*2+1);}void update(int left,int right,ll val,int i)//区间更新{ if(tree[i].l==left&&tree[i].r==right){tree[i].mark+=val;return;} tree[i].val+=val*(right-left+1); if(tree[i].mid<left)update(left,right,val,2*i+1); else if(tree[i].mid>=right)update(left,right,val,2*i); else { update(left,tree[i].mid,val,2*i); update(tree[i].mid+1,right,val,2*i+1); }}ll query(int left,int right,int i)//区间查询{ if(tree[i].l==left&&tree[i].r==right) return tree[i].val+tree[i].mark*(right-left+1); if(tree[i].mark!=0) { tree[i*2].mark+=tree[i].mark;tree[i*2+1].mark+=tree[i].mark; tree[i].val+=(tree[i].r-tree[i].l+1)*tree[i].mark;tree[i].mark=0; } if(tree[i].mid>=right){return query(left,right,i*2);} else if(tree[i].mid<left){return query(left,right,i*2+1);} else{return query(left,tree[i].mid,i*2)+query(tree[i].mid+1,right,i*2+1);}}int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF) { for(int i=1;i<=n;i++) scanf("%I64d",&s[i]); build(0,M,1); ...... } return 0;}
0 0
- ACM 线段树模板(模板)
- 线段树模板
- hdu_1166_线段树模板
- 线段树模板
- 线段树模板 poj2777
- 线段树模板
- 线段树模板
- 线段树-模板
- 线段树模板
- 线段树模板
- 线段树模板
- Hdu1166-- 线段树模板
- 线段树模板
- 线段树模板
- 线段树模板
- 线段树模板
- 线段树模板
- 线段树模板
- 用decodeFileDescriptor()来生成bimap比decodeFile()省内存
- android-新浪微博客户端开发-效果图以及讲解PPT(五)
- 面试技巧--->面向对象的思想示例
- Codeforces Round #290 (Div. 2)
- iOS和swift混编
- 线段树模板
- 中国领导文化
- NETWORK MANAGER的L2TP VPN插件,可选支持IPSEC
- 【数据结构】第5章 数组和广义表
- 深入理解php内核
- 自动化测试框架的目标定义
- Jxstar Toad for MySQL 7.2制作数据库对比SQL方法
- JAVA获取随机数
- 波特率与比特率的区别