這天,sjy顯得無聊。在家自己玩。在乙個棋盤上,有n個黑色棋子。他每次要麼放到棋盤上乙個黑色棋子,要麼放上乙個白色棋子,如果是白色棋子,他會找出距離這個白色棋子最近的黑色棋子。此處的距離是 曼哈頓距離 即(|x1-x2|+|y1-y2|) 。現在給出n<=500000個初始棋子。和m<=500000個操作。對於每個白色棋子,輸出距離這個白色棋子最近的黑色棋子的距離。同乙個格仔可能有多個棋子。
kdtree可以過
hint已經很良心了,這題實際上和2714是一樣的,練手
#include
#include
#include
#define rep(i,st,ed) for (int i=st;i<=ed;++i)
#define min(x,y) ((x)<(y)?(x):(y))
#define max(x,y) ((x)>(y)?(x):(y))
const
int inf=0x3f3f3f3f;
const
int n=1000005;
struct treenodet[n];
int d,root,ans;
int read()
bool cmp(treenode a,treenode b)
void update(int x,int y)
int get_dis(int now,int x,int y)
void query(int now,int x,int y)
now=t[now].l;
} else
now=t[now].r;
}d^=1;
}}int buildtree(int l,int r,int dd)
int main(void)
root=buildtree(1,n,0);
rep(i,1,m) else
}return
0;}
bzoj2648 sjy擺棋子 kd樹
這天,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個黑色棋子。他每次要麼放到棋盤上...