這個題我是通過建立座標系加找規律做出來的,個人感覺難點是建立座標系,所以我將著重講一下座標系是怎麼建立的
建立座標系:
豎線,就會把乙個正六邊形分為四部分如下圖
紅色的點是原點o,標1的是單位長度為1,2則是單位長度為2(原諒我把圖畫的這麼難看)
這就是我們建立的座標系
知道了我們座標系的樣子下面就是實施建造,流程如下
1、以第乙個點作為原點錄入
2、將第二個點也即下一次迴圈的起始點錄入
3、移動,移動方向分別為左上、上、右上、右下、下
4、下一2單位長度到達下乙個迴圈
5、向左下移動直至到達原點正下方
我們解題的規律則是當x大於等於y的差時,值為x,否則值為x + (y - x) / 2
x,y分別代表x軸的差和y軸的差
ac**
#include#includeconst int maxn = 20000 + 10;
const int dir[5][2] = ,,,,};
struct point
point(int x,int y)
}p[maxn]; //點集
//以第乙個點為原點,初始化座標系
void init()
}//抵達下乙個迴圈
y -= 2;
p[cnt++] = point(x,y);
for(int j = 0; j < i; j++)
}}int main()
return 0;
}
最近點對問題 UVa 10245 (分治)
給定平面上的n個點,求距離最近的兩個點的距離。限制條件 1 n 10000 思路 假設我們把所有點按x座標分成了左右兩半,那麼最近點對的距離就是下面二者的最小值 1 2點p和q同屬於左半邊或右半邊時點對 p,q 的距離 2 2點p和q屬於不同區域時點對 p,q 的距離 首先,對於 1 可以通過遞迴計...
題解 UVA1595 對稱軸 Symmetry
本篇題解本來寫於洛谷,但是洛谷的格式審查嚴格 僅本人檢視 故再寫於csdn 1.由於對稱軸垂直於x軸因此每個點的x座標排序去重後按照奇偶數分開討論.2.奇數x座標對稱軸在中間點上.3.偶數x座標對稱軸不在任何點上是乙個浮點值.4.預存每個點的xy座標到set中,方便按照2,3劃分的座標軸情況遍歷每個...