完全一样的代码为什么我的报错?
查看原帖
完全一样的代码为什么我的报错?
1380473
ZY_202301005129楼主2024/10/2 21:19

无论是B站的视频,还是题解,还是算法竞赛白皮书,都写到了查找函数query,但是如果父节点p的左右边界都相等的话,却没有相应的特殊处理,这会导致无限递归下去(至少在我这边会这样)

public static int query(int l,int r,int p,int pl,int pr)//查询区间和
	{
		if(l>=pl&&r>=pr)
		{
			return tree[p];
		}
		push_down(p,pl,pr);
		
		int mid=(pl+pr)>>1;
		int sum=0;
		if(l<=mid)sum+=query(l,r,(p<<1),pl,mid);
		if(r>mid)sum+=query(l,r,(p<<1|1),mid+1,pr);
		return sum;
	}
    ```
2024/10/2 21:19
加载中...