博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cdoj1057 秋实大哥与花 线段树 区间加,区间查询和
阅读量:5344 次
发布时间:2019-06-15

本文共 2347 字,大约阅读时间需要 7 分钟。

题目链接:

题意:

题解:

代码:

1 #include 
2 using namespace std; 3 typedef long long ll; 4 #define MS(a) memset(a,0,sizeof(a)) 5 #define MP make_pair 6 #define PB push_back 7 const int INF = 0x3f3f3f3f; 8 const ll INFLL = 0x3f3f3f3f3f3f3f3fLL; 9 inline ll read(){10 ll x=0,f=1;char ch=getchar();11 while(ch<'0'||ch>'9'){
if(ch=='-')f=-1;ch=getchar();}12 while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}13 return x*f;14 }15 //16 const int maxn = 1e5+10;17 18 int n,a[maxn],q;19 20 struct node{21 int l,r;22 ll sum,lazy;23 void update(ll x){24 sum += 1LL * (r-l+1)*x;25 lazy += x;26 }27 }tree[maxn<<2];28 29 void pushup(int rt){30 tree[rt].sum = tree[rt<<1].sum+tree[rt<<1|1].sum;31 }32 33 void pushdown(int rt){34 int lazyval = tree[rt].lazy;35 if(lazyval){36 tree[rt<<1].update(lazyval);37 tree[rt<<1|1].update(lazyval);38 tree[rt].lazy = 0;39 }40 }41 42 43 void build(int rt,int l,int r){44 tree[rt].l = l,tree[rt].r = r;45 tree[rt].sum = tree[rt].lazy = 0;46 if(l == r){47 tree[rt].sum = a[l];48 }else{49 int mid = (l+r)/2;50 build(rt<<1,l,mid);51 build(rt<<1|1,mid+1,r);52 pushup(rt);53 }54 }55 56 void update(int rt, int l,int r,ll val){57 int L = tree[rt].l, R = tree[rt].r;58 if(l<=L && R<=r){59 tree[rt].update(val);60 }else{61 pushdown(rt);62 int mid = (L+R) / 2;63 if(mid >= l) update(rt<<1,l,r,val);64 if(r > mid) update(rt<<1|1,l,r,val);65 pushup(rt);66 }67 }68 69 ll query(int rt,int l,int r){70 int L = tree[rt].l, R = tree[rt].r;71 if(l<=L && R<=r){72 return tree[rt].sum;73 }else{74 pushdown(rt);75 ll ans = 0;76 int mid = (L+R) / 2;77 if(mid >= l) ans += query(rt<<1,l,r);78 if(r > mid) ans += query(rt<<1|1,l,r);79 pushup(rt);80 return ans;81 }82 }83 84 int main(){85 n = read();86 for(int i=1; i<=n; i++)87 a[i] = read();88 build(1,1,n);89 q = read();90 for(int i=1; i<=q; i++){91 int l,r,val;92 scanf("%d%d%d",&l,&r,&val);93 update(1,l,r,val);94 printf("%I64d\n",query(1,l,r));95 }96 97 return 0;98 }

 

转载于:https://www.cnblogs.com/yxg123123/p/6827662.html

你可能感兴趣的文章
POJ 2960 S-Nim 博弈论 sg函数
查看>>
Dijkstra模版
查看>>
一个简单的插件式后台任务管理程序
查看>>
GDB调试多进程程序
查看>>
组合数
查看>>
CMD批处理延时启动的几个方法
查看>>
转:LoadRunner中web_custom_request 和 web_submit_data的差别
查看>>
HTC G7直刷MIUI开启A2SD+亲测教程
查看>>
shiro的rememberMe不生效
查看>>
const 不兼容的类型限定符问题
查看>>
OpenCV的配置
查看>>
spring Cache + Redis 开发数据字典以及自定义标签
查看>>
成功连上数据库顿感世界美好许多
查看>>
编程注意2
查看>>
《C++ Primer Plus》第12章 类和动态内存分配 学习笔记
查看>>
javascript中sort()排序方法总结
查看>>
实现聊天界面的代码
查看>>
自己生成一个NDK的浅析
查看>>
Excel数据导入到数据库
查看>>
jQuery最佳实践
查看>>