如果你fhq样例过了但是WA0
查看原帖
如果你fhq样例过了但是WA0
1175391
lin20081016楼主2025/1/22 08:49

在寻找区间最小值位置的函数中记得下传标记

int getmin(int l,int r){
	int x,y,z;
	lspl(rt,r,x,z);
	lspl(x,l-1,x,y);//按排名分裂
	ans=siz[x];
	int i=y;
	while(1){
		pd(i);//这里加了就过了
		int MINN=minn[i],MINN1=minn[son[i][0]],MINN2=minn[son[i][1]];
		if(min(MINN1,MINN2)>MINN){
			ans+=siz[son[i][0]]+1;
			break;
		}
		if(MINN1<MINN2){
			i=son[i][0];
		}else{
			ans+=siz[son[i][0]]+1;
			i=son[i][1];
		}
	}
	rt=mer(mer(x,y),z);
	return ans;
}
2025/1/22 08:49
加载中...