hdu 6325 計算幾何 凸包

2021-08-22 00:03:36 字數 936 閱讀 2467

原題:

題意:二維平面上給出許多點,起點(0,0)終點(m,0)。選一些點,相鄰兩個點i,j之間產生乙個權值,(xi× yj − xj×yi),其實就是叉積。 要求權值和最小,起點和終點必須選。點可以重合,如果有多個答案要求輸出字典序最小的。

這個叉積就可以轉換成乙個圖形的面積,它又要求這個值最小,其實就是要求面積最大(因為是順時針的吧?)。這個方塊必須是凸著的。 然後就變成求乙個凸包了。

#include 

using

namespace

std;

int t,n;

struct point

friend

long

long

operator ^(point &a,point &b)

};point a[200005];

// 按x從小到大,y從小到大排序

bool cmp(point a,point b)

else

}return a.x < b.x;

}point s[200005];

int top = 0;

bool judge(point a,point b,point c)

else

return

false;

}int main()

sort(a + 1,a + 1 + n,cmp);

// graham掃瞄法?是這個思想吧

top = 0;

s[top++] = a[1];

s[top++] = a[2];

for(int i = 3; i <= n; i++)

s[top++] = a[i];

}for(int i = 0; i < top; i++)

}return

0;}

hdu 1616 計算幾何 凸包

題意是乙個世界有許多個國家,每個國家有n個建築,包括乙個發電站和n 1個用電建築,所有建築圍成的凸包就是這個國家的面積。一枚飛彈如果在乙個國家之內 則可以使這個國家停電。step 1 求出每個國家的凸包 我用水平排序就是各種坑,改叉乘排序才過,主要是後面求面積的時候需要這個叉乘排序的資訊 step ...

計算幾何 凸包

有多個手機訊號發射器,求解乙個最小區域,要求所有的發射器都包含在這個最小區域中,並且任意兩台發射器之間的交流包含於在這個區域內。將所有的發射器看做為點,任意兩個點之間的連線都包含於乙個平面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的運算子 定...