关于李超线段树的一种写法的时间复杂度
  • 板块学术版
  • 楼主王熙文
  • 当前回复12
  • 已保存回复12
  • 发布时间2023/4/15 15:27
  • 上次更新2023/10/23 18:25:31
查看原帖
关于李超线段树的一种写法的时间复杂度
353688
王熙文楼主2023/4/15 15:27

以下这个代码:

pair<int,int> tree[4000010];
int get_wz(pair<int,int> line,int x) { return x*line.first+line.second; }
void upd(int now,int l,int r,pair<int,int> line)
{
	if(tree[now].first==-1 || (get_wz(line,l)<=get_wz(tree[now],l) && get_wz(line,r)<=get_wz(tree[now],r))) return tree[now]=line,void();
	if(get_wz(line,l)>=get_wz(tree[now],l) && get_wz(line,r)>=get_wz(tree[now],r)) return;
	int mid=(l+r)>>1;
	upd(now<<1,l,mid,line),upd(now<<1|1,mid+1,r,line);
}

我感觉复杂度是不对的,因为每一次都要递归两边。但是在很多题目中都不会挂。

2023/4/15 15:27
加载中...