【BZOJ4066】简单题(KD-Tree)
题面
题解
如果这题不卡空间,并且不强制在线的话
显然可以用
\(CDQ\)分治做
但是它又卡空间又强制在线,于是我们欢快的来用\(KD-Tree\)吧。
用\(KD-Tree\)维护每一个点,每次询问的时候
判断询问的矩形和当前矩形的交
如果全部覆盖直接加上所有的和
如果没有交则直接返回
如果有部分交则递归处理。
我用了两种方案防止\(KD-Tree\)被卡
第一种:定时重构。大概就是每插入
\(10000\)次后就重构一次
#include #include #include #include #include #include #include #include
第二种:类似替罪羊树,当不满足平衡因子时,把子树拍掉重构。
#include #include #include #include #include #include #include #include