分块求助!!!
查看原帖
分块求助!!!
169844
w2321楼主2021/2/3 11:24

这两种分块有什么区别? 上面这个为什么不行?

void block(){
	t=sqrt(n);
	for(ri i=1;i<=t;++i)
		l[i]=(i-1)*t+1,r[i]=i*t;
	if(r[t]<n) l[++t]=r[t-1]+1,r[t]=n;
	for(ri i=1;i<=t;++i)
		for(ri j=l[i];j<=r[i];++j)
			b[j]=i;
}
void block(){
	t=sqrt(n);
	for(ri i=1;i<=n;++i) b[i]=(i-1)/t+1;
	for(ri i=1;i<=b[n];++i) 
		l[i]=(i-1)*t+1,r[i]=i*t;
	r[b[n]]=min(r[b[n]],n);
}
2021/2/3 11:24
加载中...