Rt,有一个长度为 n 的数组 a,每次二分一个 mid将 >=mid 的设置为 1,<mid 的设置为 0(插入使用线段树)。
询问数q和n都是<=2e5,a数组元素均不超过1e9.
求问以下伪代码复杂度:
void update(int x){
while(o[now - 1].first >= x) add(1,1,n,o[--now].second,1);
while(o[now].first < x) add(1,1,n,o[now++].second,0);
}//动态调整
void work(int l,int r,int ql,int qr){
...
if(_l >= ql) work(l,mid,ql,_l);//如果有询问落在左边访问左边
if(_r <= qr) work(mid + 1,r,_r,qr);//如果有询问落在右边访问右边
...
}
如果以上代码复杂度假了,那么求真做法。