关于线段树裸的区间询问
  • 板块灌水区
  • 楼主wangheyi998
  • 当前回复7
  • 已保存回复7
  • 发布时间2020/5/21 17:54
  • 上次更新2023/11/7 02:04:27
查看原帖
关于线段树裸的区间询问
232099
wangheyi998楼主2020/5/21 17:54

我有两种写法,但是总是莫名其妙wa,请问一下那个是正确的。

int qj_ask(int al,int ar,int k)
{
	if(tree[k].l>=al&&tree[k].r<=ar)
	{
		return tree[k].sum;
	}
	int mid=tree[k].l+tree[k].r>>1;
	if(ar<=mid)
	return qj_ask(al,ar,k<<1);
	if(al>mid)
	return qj_ask(al,ar,k<<1|1);
	return qj_ask(al,ar,k<<1)+qj_ask(al,ar,k<<1|1);
}
void sum(int k)
{
    if(tree[k].l>=al&&tree[k].r<=ar) 
    {
        ans+=tree[k].w;
        return;
    }
    int m=(tree[k].l+tree[k].r)>>1	    		 if(x<=m) sum(k<<1);
    if(y>m) sum(k<<1|1);
}
2020/5/21 17:54
加载中...