hdu5251 凸包 旋轉卡殼

2021-08-04 12:46:14 字數 1080 閱讀 5574

傳送門:hdu5251 矩形面積

接觸了旋轉卡殼不久,感覺很神奇……

這個題是要尋找乙個矩形來覆蓋住桌面上的小矩形,小矩形即四個點啦,所以就是

找乙個矩形覆蓋住這些點,也就要求乙個凸包,再用矩形把凸包蓋住,那就很明顯的

是旋轉卡殼了,類似旋轉卡殼求凸包的寬度,只是這是求矩形面積的最小值

完整**:

#include#include#include#includeusing namespace std;

const int maxn=1000005;

const double pi=acos(-1.0);

typedef long long ll;

struct point

;point list[maxn];

point stack[maxn];

int top;

/**叉積**/

double cross(point p0,point p1,point p2)

/**點積**/

double dot(point p0,point p1,point p2)

/**距離的平方**/

double dis(point p1,point p2)

/**極角排序**/

bool cmp(point p1,point p2)

}}/**旋轉卡殼**/

double rotating_calipers(point p,int n)

return ans;

}int main()

{ int t;

scanf("%d",&t);

int cnt=0;

while(t--)

{cnt++;

int n;

scanf("%d",&n);

int k=0;

scanf("%lf%lf",&list[0].x,&list[0].y);

for(int i=1;i<4*n;i++)

{scanf("%lf%lf",&list[i].x,&list[i].y);

if(list[i].y

凸包問題 旋轉卡殼

1978年,m.i.shamos在 computational ceometry 中介紹了一種尋找凸多邊形直徑的線性演算法。1.支撐線 如果一條直線l,通過凸多邊形p的乙個頂點,且多邊形在這條直線的一側,稱l是p的支撐線。2.對踵 zhong,三聲 點 如果過凸包上的兩個點可以畫一對平行直線,使凸包...

模板 凸包 旋轉卡殼

模板 凸包 旋轉卡殼 lrj 訓練指南 p272 對於個點按照 x 從小到大排序,再按照 y 點從小到大排序,刪除重複的點後,得到序列 p0,p1,p2.把 p0 和 p1 放入凸包。從p2開始,當新點在凸包 前進 方向的左邊時繼續,否則依次刪除最近加入凸包的點,直到新點在左邊 ps 判斷用叉積即可...

旋轉卡殼 凸包的直徑

poj 2187 直接求直徑ok 多邊形的直徑被定義為多邊形上任意兩點間的最大距離的值。在多邊形上,決定直徑的點可能不止一對。事實上,如果乙個多邊形含有n個頂點,那麼就最多有 n 對 直徑點對 在。上圖所示的是乙個簡單的多邊形直徑的例項。直徑點對在圖中是被平行的切線 用紅色表示 穿過的黑點.直徑是用...