[调试笔记] 10.8模拟赛11 T4 甜圈

这题正解线段树维护哈希,同机房神犇已经讲的很明白了。这里只说sbwzx在调试的时候犯的sb错误。

1.关于pushdown和update

众所周知,sbwzx一写带lazy的线段树,就必在pushdown和update上花式写挂。那么这次是怎么写挂的呢?快和小编一起来看看吧。
挂掉的码:
ll tree[maxn<<2],lazyp[maxn<<2],lazyadd[maxn<<2];
void updateadd(int rt,int w){
	tree[rt]*=w;
	lazyadd[rt]*=w;
}
void updatep(int rt,int l,int r,int w){
	tree[rt]+=w*(r-l+1);
	lazyp[rt]+=w;
}
void pushdown(int rt,int l,int r){
	if(lazyadd[rt]!=1){
		updateadd(rt<<1,lazyadd[rt]);
		updateadd(rt<<1|1,lazyadd[rt]);
		lazyadd[rt]=1;
	}
	if(lazyp[rt]){
		int mid=(l+r)>>1;
		updatep(rt<<1,l,mid,lazyp[rt]);
		updatep(rt<<1|1,mid+1,r,lazyp[rt]);
		lazyp[rt]=0;
	}
}

神犇yxy一看,直接找出错误:

ll tree[maxn<<2],lazyp[maxn<<2],lazyadd[maxn<<2];
void updateadd(ll rt,ll w){
	tree[rt]*=w;
	lazyadd[rt]*=w;
	lazyp[rt]*=w;
}
众所周知,全hzoi2019除了sbwzx都知道线段树2怎么写。

2.数据类型不分

让一个int和一个ull比较,我们sbwzx真是太sb了!
好了,以上就是sbwzx在调试这道题时犯的全部sb错误了,大家有什么问题可以到评论区回复哦~
原文地址:https://www.cnblogs.com/wwcdcpyscc/p/13785964.html