hdu 1616 計算幾何 凸包

2021-07-02 04:10:13 字數 887 閱讀 7167

題意是乙個世界有許多個國家,每個國家有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的運算子 定...