CodeForces 52C Circular RMQ (区间更新线段树)
来源:互联网 发布:军华软件下载 编辑:程序博客网 时间:2024/06/01 09:53
#include<iostream>#include<cstdio>#define MAX 200005#define INF 0x3ffffffflong long c,tree[4*MAX],add[4*MAX];long long _min(long long a,long long b){ return a<b?a:b;}void pushdown(int n){ if(add[n]!=0) { add[2*n]+=add[n]; add[2*n+1]+=add[n]; tree[2*n]+=add[n]; tree[2*n+1]+=add[n]; add[n]=0; }}void pushup(int n){ tree[n]=_min(tree[2*n],tree[2*n+1]);}void build(int s,int e,int n){ add[n]=0; if(s==e) { scanf("%I64d",&tree[n]); return ; } int mid=(s+e)/2; build(s,mid,2*n); build(mid+1,e,2*n+1); pushup(n);}void modify(int a,int b,long long c,int s,int e,int n){ if(a<=s&&e<=b) { add[n]+=c; tree[n]+=c; return ; } pushdown(n); int mid=(s+e)/2; if(a<=mid) modify(a,b,c,s,mid,2*n); if(mid<b) modify(a,b,c,mid+1,e,2*n+1); pushup(n);}long long query(int a,int b,int s,int e,int n){ if(a<=s&&e<=b) { return tree[n]; } pushdown(n); int mid=(e+s)/2; long long s2,s1;s1=s2=INF; if(a<=mid) s1=_min(s1,query(a,b,s,mid,2*n)); if(mid<b) s2=_min(s2,query(a,b,mid+1,e,2*n+1)); return _min(s1,s2);}int main(){ int n,m,i,a,b; char q; scanf("%d",&n); build(1,n,1); scanf("%d",&m); while(m--) { scanf("%d%d",&a,&b); q=getchar(); if(q==' ') { scanf("%I64d",&c); if(a<=b) { modify(a+1,b+1,c,1,n,1); } else { modify(a+1,n,c,1,n,1); modify(1,b+1,c,1,n,1); } } else { if(a<=b) printf("%I64d\n",query(a+1,b+1,1,n,1) ); else { long long s1=query(a+1,n,1,n,1); long long s2=query(1,b+1,1,n,1); printf("%I64d\n",_min(s1,s2) ); } } } return 0;}
0 0
- CodeForces 52C Circular RMQ (区间更新线段树)
- CodeForces 52C Circular RMQ (区间更新线段树)
- CodeForces 52C Circular RMQ(区间循环线段树,区间更新,区间求和)
- CodeForces 52C Circular RMQ (线段树的区间更新+lazy tag)
- codeforces 52C Circular RMQ(线段树区间更新)【模板】
- CF#52 C Circular RMQ (线段树区间更新)
- Codeforces 52C - Circular RMQ - 线段树
- 【CodeForces】52C Circular RMQ 线段树
- codeforces #52 C Circular RMQ(线段树)
- CF 52C Circular RMQ(区间更新,区间询问)
- Codeforce 52C---Circular RMQ 线段树
- 线段树 C. Circular RMQ
- Codeforces 52C (线段树区间更新)
- Codeforces 52C Circular RMQ 线段树+从字符串读数字 sscanf
- CodeForces 272C-Dima and Staircase-线段树区间更新-RMQ
- 线段树 Circular RMQ
- Codeforces 444C DZY Loves Colors 线段树区间更新
- Codeforces 272C(线段树区间更新)@
- linux_C 字符串查找 strfpos
- 代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧
- SQL Server 2008 游标
- 开博来个记录
- 主题模型及其在文本情感分析中的应用
- CodeForces 52C Circular RMQ (区间更新线段树)
- 使用CocoaPods来管理iOS项目的依赖库
- poj 3160 Father Christmas flymouse 强连通缩点+bfs
- JTable 使用详解
- 海量数据处理:十道面试题与诗歌海量数据处理方法我自己的总结
- http协议学习系列
- 关于使用fgets获取的字符串换行符在windows和linux平台的差异
- 文本情感分析
- Form表单提交方法method