线段树模板
来源:互联网 发布:淘宝宝贝命名规则 编辑:程序博客网 时间:2024/05/05 01:40
codevs 1082 线段树练习3
#include<iostream>#include<cstdio>using namespace std;const int maxn=200010*2;long long n;struct cc{ long long l,r,add,sum;}tree[maxn*2];long long yy[maxn];void update(long long p){ tree[p].sum=tree[p*2].sum+tree[p*2+1].sum; return;}void spread(long long p){ if(!tree[p].add) return; tree[p*2].add+=tree[p].add; tree[p*2+1].add+=tree[p].add; tree[p*2].sum+=tree[p].add*(tree[p*2].r-tree[p*2].l+1); tree[p*2+1].sum+=tree[p].add*(tree[p*2+1].r-tree[p*2+1].l+1); tree[p].add=0; update(p); return;}void build(long long l,long long r,long long p){ tree[p].l=l,tree[p].r=r; if(l==r) { tree[p].sum=yy[l]; return; } long long mid=(tree[p].l+tree[p].r)/2; build(l,mid,p*2); build(mid+1,r,p*2+1); update(p); return;}void change(long long l,long long r,long long p,long long v){ if(l<=tree[p].l&&tree[p].r<=r) { tree[p].add+=v; tree[p].sum+=v*(tree[p].r-tree[p].l+1); return; } spread(p); long long mid=(tree[p].l+tree[p].r)/2; if(l<=mid) change(l,r,p*2,v); if(mid+1<=r) change(l,r,p*2+1,v); update(p); return;}long long ask(long long l,long long r,long long p){ long long ans=0; if(l<=tree[p].l&&tree[p].r<=r) { return tree[p].sum; } spread(p); long long mid=(tree[p].l+tree[p].r)/2; if(l<=mid) ans+=ask(l,r,p*2); if(mid+1<=r) ans+=ask(l,r,p*2+1); update(p); return ans;}int main(){ scanf("%lld",&n); for(long long i=1;i<=n;i++) { scanf("%lld",&yy[i]); } build(1,n,1); long long q; scanf("%lld",&q); for(long long i=1;i<=q;i++) { long long x; scanf("%lld",&x); if(x==1) { long long y,z,v; scanf("%lld%lld%lld",&y,&z,&v); change(y,z,1,v); } if(x==2) { long long y,z; scanf("%lld%lld",&y,&z); printf("%lld\n",ask(y,z,1)); } } return 0;}
2 0
- ACM 线段树模板(模板)
- 线段树模板
- hdu_1166_线段树模板
- 线段树模板
- 线段树模板 poj2777
- 线段树模板
- 线段树模板
- 线段树-模板
- 线段树模板
- 线段树模板
- 线段树模板
- Hdu1166-- 线段树模板
- 线段树模板
- 线段树模板
- 线段树模板
- 线段树模板
- 线段树模板
- 线段树模板
- C语言sizeof和strlen
- VMware 提示”此虚拟机被配置为64位操作系统,然而,64位操作无法进行”
- 辅域控制器的安装方法
- [译]开发安卓Apps,我所努力学习到的三十多条宝贵经验
- Java集合框架之List
- 线段树模板
- Android Studio在线升级(不用翻墙!)
- vs异常:invalid allocation size
- 实战 SQL Server 2008 日志传送(Log Shipping)
- 2D激光SLAM算法比较+cartographer
- 内部类和匿名内部类
- Spring MVC接收中文乱码问题(追加中)
- 关于百度地图实现定位的两种方式(baiduSDK 和 Service+BaiduSDK)
- 变更苹果账户企业名称--干货呦