怎么在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