void Sqrt(ll l,ll r){
ll L=0,R=0;
auto end=split(r+1);
for(auto it=split(l);it!=end;it++){
if(it->v>1) it->v=sqrt(it->v);
if(it->v==V) R=it->r;
else{
if(V)
assign(L,R,V);
L=it->l,R=it->r,V=it->v;
}
}
assign(L,R,V);
}
这是题解里的开方写法 我没明白在暴力开方之后 assign 的原理 但是不这么写就会 t
还有if(V) 后面什么都不跟 没见过这种写法 但是删掉就会 RE.
求讲解