這天,sjy顯得無聊。在家自己玩。在乙個棋盤上,有n個黑色棋子。他每次要麼放到棋盤上乙個黑色棋子,要麼放上乙個白色棋子,如果是白色棋子,他會找出距離這個白色棋子最近的黑色棋子。此處的距離是 曼哈頓距離 即(|x1-x2|+|y1-y2|) 。現在給出n<=500000個初始棋子。和m<=500000個操作。對於每個白色棋子,輸出距離這個白色棋子最近的黑色棋子的距離。同乙個格仔可能有多個棋子。
第一行兩個數 n m
以後m行,每行3個數 t x y
如果t=1 那麼放下乙個黑色棋子
如果t=2 那麼放下乙個白色棋子
對於每個t=2 輸出乙個最小距離
2 31 12 3
2 1 2
1 3 3
2 4 212
kdtree可以過
題解:比較裸的kd樹.
插入點的時候暴力走到底即可.
**:
#include#include#include#include#include#define n 600010
#define inf 2100000000
using namespace std;
int n,x,y,f,opt,rt,m;
struct use
friend bool operator<(use a,use b)
int getmn(use a)
return ans;
} void qmn(int x)
} else
}update(k);
} void ins(int x,int y)
int query(int x,int y)
}kd;
int main()
rt=kd.build(1,n,0);
for (int i=1;i<=m;i++)
else
}}
bzoj2648 SJY擺棋子 k d樹
這天,sjy顯得無聊。在家自己玩。在乙個棋盤上,有n個黑色棋子。他每次要麼放到棋盤上乙個黑色棋子,要麼放上乙個白色棋子,如果是白色棋子,他會找出距離這個白色棋子最近的黑色棋子。此處的距離是 曼哈頓距離 即 x1 x2 y1 y2 現在給出n 500000個初始棋子。和m 500000個操作。對於每個...
BZOJ2648 SJY擺棋子 k d樹
題目鏈結 思路 二維的k d k dk d樹,查詢的時候其實就是貪心搜尋 剪枝,k d k dk d樹的建樹和查詢網上很多,插入的時候就是暴力插入。可為啥我的暴力插入超時了,話說應該要像替罪羊樹那樣維護k d k dk d樹的平衡性吧。暴力重建 弱剪枝還超時了。include define endl...
bzoj2648 kd樹 SJY擺棋子
2648 sjy擺棋子 time limit 20 sec memory limit 128 mb submit 4914 solved 1688 submit status discuss description 這天,sjy顯得無聊。在家自己玩。在乙個棋盤上,有n個黑色棋子。他每次要麼放到棋盤上...