題意是乙個世界有許多個國家,每個國家有n個建築,包括乙個發電站和n-1個用電建築,所有建築圍成的凸包就是這個國家的面積。一枚飛彈如果在乙個國家之內**則可以使這個國家停電。
step 1:求出每個國家的凸包(我用水平排序就是各種坑,改叉乘排序才過,主要是後面求面積的時候需要這個叉乘排序的資訊)。
step 2:判斷每枚飛彈是否在這個國家的範圍之內。
step 3:求出所有停電的國家的面積。
就是計算幾何的綜合模擬水題,坑點就是要小心(qaq||寫計算幾何的題目都是要小心)。
傳送門:
#include #include #include #include #include #define maxn 105
#define eps 1e-8
using namespace std;
struct node ;
struct king;
king a[maxn];
int lt;
double fx ,fy;
bool cmpconvex1(node a1,node a2)
return (a1.x-fx)*(a2.y-fy)>(a1.y-fy)*(a2.x-fx);
}double dot(double x1,double y1,double x2,double y2)
double cross(node a1,node a2,node a3)
int convexhull(node * p,node * ans,int t)
ans[k++] = p[j];
}return k;
}double getarea(node * ans,int lenc){
double area = 0;
for(int i=0;i
hdu 6325 計算幾何 凸包
原題 題意 二維平面上給出許多點,起點 0,0 終點 m,0 選一些點,相鄰兩個點i,j之間產生乙個權值,xi yj xj yi 其實就是叉積。要求權值和最小,起點和終點必須選。點可以重合,如果有多個答案要求輸出字典序最小的。這個叉積就可以轉換成乙個圖形的面積,它又要求這個值最小,其實就是要求面積最...
計算幾何 凸包
有多個手機訊號發射器,求解乙個最小區域,要求所有的發射器都包含在這個最小區域中,並且任意兩台發射器之間的交流包含於在這個區域內。將所有的發射器看做為點,任意兩個點之間的連線都包含於乙個平面s 乙個平面的子集s 是凸的,當且僅當 s中的任意兩個點之間的連線都包含於 s中。點集 p的凸包是所有包含 p的...
計算幾何 凸包
如求凸包周長 include include include include include include using namespace std define pi 3.1415926 define eps 1e 10 class point 建立point類,裡面包含很多point的運算子 定...