求助pushup怎么WA了
  • 板块灌水区
  • 楼主封禁用户
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/1/28 20:44
  • 上次更新2024/1/28 22:25:55
查看原帖
求助pushup怎么WA了
995971
封禁用户楼主2024/1/28 20:44
void PushUp(int k,int l,int r){
			int mid=l+r>>1;
			int ls=k<<1,rs=k<<1|1;
			ans[k]=max(ans[ls],ans[rs]);
			
			L[k]=L[ls],R[k]=R[rs];
			Lu[k]=Lu[ls],Ld[k]=Ld[ls],Lud[k]=Lud[ls];
			
			Ru[k]=Ru[rs],Rd[k]=Rd[rs],Rud[k]=Rud[rs];
			
			if(R[ls]<L[rs]){
				if(Lu[ls]==mid-l+1){
					Lu[k]=Lu[ls]+Lu[rs];
					Lud[k]=Lu[ls]+Lud[rs];
				}
				if(Ru[rs]==r-mid)
					Ru[k]=Ru[ls]+Ru[rs];
				if(Rud[rs]==r-mid)
					Rud[k]=Ru[ls]+Rud[rs];
				
				ans[k]=max(ans[k],Ru[ls]+max(Lud[rs],max(Lu[rs],Ld[rs])));
			}else if(R[ls]>L[rs]){
				if(Ld[ls]==mid-l+1){
					Ld[k]=Ld[ls]+Ld[rs];
					Lud[k]=Lud[ls]+Ld[rs];
				}
				if(Rd[rs]==r-mid){
					Rd[k]=Rd[ls]+Rd[rs];
					Rud[k]=Rud[ls]+Rd[rs];
				}
				ans[k]=max(ans[k],max(Rud[ls],max(Ru[ls],Rd[ls]))+Ld[rs]);
			}
		}

题目

2024/1/28 20:44
加载中...