1. 程式人生 > 實用技巧 >[除錯筆記] 10.8模擬賽11 T4 甜圈

[除錯筆記] 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錯誤了,大家有什麼問題可以到評論區回覆哦~