【2014 Multi-University Training Contest 4】 Nice boat
来源:互联网 发布:云购cms演示 编辑:程序博客网 时间:2024/05/16 15:32
线段树,区间操作
代码:
#include <cstdio>#include <algorithm>using namespace std;const int maxn=100010;__int64 sum[maxn<<2];__int64 add[maxn<<2];void PushUp(int rt){ if(sum[rt<<1]==sum[rt<<1|1]) sum[rt]=sum[rt<<1]; else sum[rt]=-1;}void build(int l,int r,int rt){ add[rt]=0; if(l==r) { scanf("%I64d",&sum[rt]); add[rt]=0; return ; } int m=(l+r)>>1; build(l,m,rt<<1); build(m+1,r,rt<<1|1); PushUp(rt);}void PushDown(int l,int r,int rt){ if(add[rt]) { add[rt<<1]=add[rt<<1|1]=add[rt]; sum[rt<<1]=sum[rt<<1|1]=add[rt]; add[rt]=0; }}void update1(int a,int b,__int64 x,int l,int r,int rt){ if(a<=l&&b>=r) { add[rt]=sum[rt]=x; return ; } PushDown(l,r,rt); int m=(l+r)>>1; if(a<=m) update1(a,b,x,l,m,rt<<1); if(b>m) update1(a,b,x,m+1,r,rt<<1|1); PushUp(rt);}void update2(int a,int b,__int64 x,int l,int r,int rt){ if(sum[rt]!=-1&&(a<=l&&b>=r)) { if(sum[rt]>x) add[rt]=sum[rt]=__gcd(x,sum[rt]); return ; } PushDown(l,r,rt); int m=(l+r)>>1; if(a<=m) update2(a,b,x,l,m,rt<<1); if(b>m) update2(a,b,x,m+1,r,rt<<1|1); PushUp(rt);}void query(int l,int r,int rt){ if(l==r) { printf("%I64d ",sum[rt]); return ; } PushDown(l,r,rt); int m=(l+r)>>1; query(l,m,rt<<1); query(m+1,r,rt<<1|1);}int main(){ int T,n,m,a,b,x; __int64 big; scanf("%d",&T); while(T--) { scanf("%d",&n); build(1,n,1); scanf("%d",&m); while(m--) { scanf("%d%d%d%I64d",&x,&a,&b,&big); if(x==1) update1(a,b,big,1,n,1); else { update2(a,b,big,1,n,1); } } query(1,n,1); puts(""); } return 0;}
0 0
- hdu 4902 Nice boat--2014 Multi-University Training Contest 4
- 【2014 Multi-University Training Contest 4】 Nice boat
- 2014 Multi-University Training Contest 4小记
- hdu4901 The Romantic Hero 2014 Multi-University Training Contest 4
- hdu4906 Our happy ending 2014 Multi-University Training Contest 4
- 2014 Multi-University Training Contest 1小记
- 2014 Multi-University Training Contest 1
- 2014 Multi-University Training Contest 1
- 2014 Multi-University Training Contest 1
- 2014 Multi-University Training Contest 1
- 2014 Multi-University Training Contest 3小记
- 2014 Multi-University Training Contest 6小记
- 2014 Multi-University Training Contest 7小记
- 2014 Multi-University Training Contest 7 题解
- 2014 Multi-University Training Contest 8【水题两道】
- 2014 Multi-University Training Contest 8 1002
- 2014 Multi-University Training Contest 8小记
- 2014 Multi-University Training Contest 8
- POJ 2139 Six Degrees of Cowvin Bacon
- PHP5.5+启用OPCache
- Linux下批量添加用户
- 软件构架、架构和框架的区别
- hdu 1518 Square (dfs搜索可参考poj1011)
- 【2014 Multi-University Training Contest 4】 Nice boat
- java的反射机制
- Decoda1.17重编译实录
- 黑马程序员_交通灯管理系统
- Open Inventor中将一个实体任意剖切 并显示切面
- 《语义网基础教程》学习笔记(一)
- Microsoft Interview
- C++输入/输出流类库
- Android高手进阶 AIDL