%%%神仙\(SJY\)
题目大意:
一个二维平面,有两种操作:
\(1.\)增加一个点\((x,y)\)
\(2.\)询问距离\((x,y)\)曼哈顿最近的一个点有多远
\(n,m\le 300 000,x_i,y_i\le 1 000 000\)
咱目前不会\(k-d\ tree\)先不提了,只讲\(cdq\)分治做法
考虑一个点如果在令一个点的右上方时,两点之间的曼哈顿距离可以转化为两个点到原点的曼哈顿距离之差,我们可以用这个方法加\(cdq\)分治求出每个询问左下角的点最近的曼哈顿距离
\(cdq\)分治时先按\(x\)排序,按\(y\)归并,按\(tim\)树状数组就可以秒了
那别的方向怎么办?
把整个矩阵转三次,然后跑\(4\)次\(cdq\)不就完了
代码懒得放了,挺裸的自己脑补吧