关于树状数组
  • 板块学术版
  • 楼主Hencecho
  • 当前回复14
  • 已保存回复14
  • 发布时间2021/10/20 08:43
  • 上次更新2023/11/4 03:12:44
查看原帖
关于树状数组
169480
Hencecho楼主2021/10/20 08:43

怎么在logn的时间进行单点插入和求区间极值

inline void updata(int now,int key)
{
	for (re int i=now;i<=n;i+=lowbit(i))
	{
		treema[i]=max(treema[i],key),treemi[i]=min(treemi[i],key);
	}
	return ;
}
int query_max(int l,int r)
{
	if (l<r)
	{
		if (l<r-lowbit(r)) return max(treema[r],query_max(l,r-lowbit(r)));
		return max(a[r],query_max(l,r-1));
	}
	return a[l];
}
int query_min(int l,int r)
{
	if (l<r)
	{
		if (l<r-lowbit(r)) return min(treemi[r],query_min(l,r-lowbit(r)));
		return min(a[r],query_min(l,r-1));
	}
	return a[l];
}

网上找到的都是这样 但实测T飞 复杂度感觉是假的QAQ

2021/10/20 08:43
加载中...