hdu4902
来源:互联网 发布:淘宝上货最少几件 编辑:程序博客网 时间:2024/06/07 06:05
思路:线段树各种lazy操作即可。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;struct node{ int l,r; int b; long long a;} t[500000];long long aa[111111];int n,m;void build(int ll,int rr,int rot){ t[rot].l=ll; t[rot].r=rr; if(ll==rr) { t[rot].a=aa[ll]; t[rot].b=1; return; } t[rot].b=0; int mid=(ll+rr)/2; build(ll,mid,rot<<1); build(mid+1,rr,rot<<1|1);}void pushdown(int rot){ if(t[rot].b==1) { t[rot<<1].a=t[rot].a; t[rot<<1].b=1; t[rot<<1|1].a=t[rot].a; t[rot<<1|1].b=1; } else { if(t[rot<<1].b==0) { t[rot<<1].b=t[rot].b; t[rot<<1].a=t[rot].a; } else if(t[rot<<1].b==1) { if(t[rot<<1].a>t[rot].a) { if(t[rot].a==0)t[rot<<1].a=0; else t[rot<<1].a=__gcd(t[rot].a,t[rot<<1].a); } } else if(t[rot<<1].b==2) { pushdown(rot<<1); t[rot<<1].b=t[rot].b; t[rot<<1].a=t[rot].a; } if(t[rot<<1|1].b==0) { t[rot<<1|1].b=t[rot].b; t[rot<<1|1].a=t[rot].a; } else if(t[rot<<1|1].b==1) { if(t[rot<<1|1].a>t[rot].a) { if(t[rot].a==0)t[rot<<1|1].a=0; else t[rot<<1|1].a=__gcd(t[rot].a,t[rot<<1|1].a); } } else if(t[rot<<1|1].b==2) { pushdown(rot<<1|1); t[rot<<1|1].b=t[rot].b; t[rot<<1|1].a=t[rot].a; } } t[rot].b=0;}void update(int u,int ll,int rr,long long x,int rot){ if(t[rot].l==ll&&t[rot].r==rr) { if(u==1) { t[rot].a=x; t[rot].b=u; } else { if(t[rot].b==1) { if(t[rot].a>x) { if(x==0)t[rot].a=0; else t[rot].a=__gcd(t[rot].a,x); } } else { if(t[rot].b==2)pushdown(rot); t[rot].a=x; t[rot].b=u; } } return; } if(t[rot].b)pushdown(rot); int mid=(t[rot].l+t[rot].r)/2; if(rr<=mid)update(u,ll,rr,x,rot<<1); else if(ll>mid)update(u,ll,rr,x,rot<<1|1); else { update(u,ll,mid,x,rot<<1); update(u,mid+1,rr,x,rot<<1|1); }}void query(int rot){ if(t[rot].b==1) { for(int i=t[rot].l; i<=t[rot].r; i++)printf("%I64d ",t[rot].a); return; } if(t[rot].b==2)pushdown(rot); query(rot<<1); query(rot<<1|1);}int main(){ int l,r,u; long long v; int T; scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=1; i<=n; i++)scanf("%I64d",&aa[i]); build(1,n,1); scanf("%d",&m); while(m--) { scanf("%d%d%d%I64d",&u,&l,&r,&v); update(u,l,r,v,1); } query(1); printf("\n"); } return 0;}
0 0
- hdu4902
- HDU4902 Nice boat
- hdu4902 线段树
- HDU4902 线段树
- 线段树lazy标记??Hdu4902
- hdu4902 线段树区间更新
- HDU4902(线段树)练习题
- HDU4902:Nice boat(线段树lazy)
- HDU4902-Nice boat(线段树)
- 入门题 _14多校—线段树 HDU4902 Nice boat
- 线段树特殊懒惰标记hdu3954(hdu4902)
- HDU4902巧妙分析避开线段树的使用
- 2014多校4,hdu4897,hdu4898,hdu4902,hdu4906题解
- HDU4902 Nice Boat(14多校联合4-1006)线段树区间更新
- c++中蓝牙编程的库类
- 数据按月统计
- STM32存储器 — <2>STM32存储器知识的相关应用(IAP、Bit Banding)
- c++中与指针相关一些基本知识
- jquery事件 【mousedown与mouseup ----keydown与keypress与keyup】focus--blur--orrer--pageX-pageY
- hdu4902
- BW:处理链报错自动邮件通知(方法2:Alert)
- 定制iOS 7中的导航栏和状态栏
- 墨菲定律、二八法则、马太效应、手表定理、“不值得”定律、彼得原理、零和游戏、华盛顿合作规律、酒与污水定律、水桶定律、蘑菇管理原理、钱的问题、奥卡姆剃刀等13条是左右人生的金科玉律
- 当前年、月、日、时、分、秒的获取
- Jquery attr("checked") 返回checked或undefined 获取选中失效
- 为多态基类声明virtual析构函数
- SequoiaDB 系统基本架构
- hdu 4861 Couple doubi 2014年多校联合第一场