【BZOJ】1604: [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居-曼哈顿距离转切比雪夫距离&set

传送门:bzoj1604


题解

很妙啊!
曼哈顿距离转切比雪夫距离算是个套路了,但是还是很难想到。
(曼哈顿距离同时限制着两个维度的值,而切比雪夫距离对问题实施了降维打击,因为可以排序做到强制一维合法,只处理另一维的信息)

考虑 ( x , y ) (x,y) (x,y)转成 ( x + y , x − y ) (x+y,x-y) (x+y,xy),则 ( i , j ) (i,j) (i,j)有连边当且仅当 m a x ( ∣ x i − x j ∣ , ∣ y i − y j ∣ ) ≤ C max(|x_i-x_j|,|y_i-y_j|)\leq C max(xixj,yiyj)C

将点按 x x x升序排序, s e t set set动态维护和当前点 i i i x x x坐标差值 ≤ C \leq C C的点的 y y y坐标,找到 y i y_i yi的前驱后继,如果距离 ≤ C \leq C C则合并(并查集维护连通性)。

你可能感兴趣的:(妙,set)