求包括n個矩形的最小矩形面積模板

2021-07-04 02:47:59 字數 1960 閱讀 2998

typedef double typev;

const double eps = 1e-8

;const int n = 50005

;int sign(double d)

struct point

point operator+(point d)

}ps[n];

//int n, cn;

double dist(point d1, point d2)

double dist2(point d1, point d2)

bool cmp(point d1, point d2)

//st1-->ed1叉乘st2-->ed2的值

typev xmul(point st1, point ed1, point st2, point ed2)

typev dmul(point st1, point ed1, point st2, point ed2)

//多邊形類

struct poly

//加進乙個點

void push(point tp)

//第k個位置

int trim(int k)

void clear()

};//返回含有n個點的點集ps的凸包

poly graham(point* ps, int n)

return ans;

}ans.push(ps[0]);

ans.push(ps[1]);

point* tps = ans.ps

; int top = -1

; tps[++top] = ps[0];

tps[++top] = ps[1];

for(int i = 2

; i < n; i++)

int tmp = top; //注意要賦值給tmp!

for(int i = n - 2

; i >= 0; i--)

ans.pn = top;

return ans;

}//求點p到st->ed的垂足,列引數方程

point getroot(point p, point st, point ed)

//next為直線(st,ed)上的點,返回next沿(st,ed)右手垂直方向延伸l之後的點

point change(point st, point ed, point next, double l)

//求含n個點的點集ps的最小面積矩形,並把結果放在ds(ds為乙個長度是4的陣列即可,ds中的點是逆時針的)中,並返回這個最小面積。

double getminarearect(point* ps, int n, point* ds)else

for(r=u=i = 0

; i < cn; i++)

while(dmul(con[i], con[i+1], con[i], con[r])

<= dmul(con[i], con[i+1], con[i], con[(r+1)%cn]))

while(dmul(con[i], con[i+1], con[i], con[l])

>= dmul(con[i], con[i+1], con[i], con[(l+1)%cn]))

tmp = dmul(con[i], con[i+1], con[i], con[r]) - dmul(con[i], con[i+1], con[i], con[l]);

tmp *= xmul(con[i], con[i+1], con[i], con[u]);

tmp /= dist2(con[i], con[i+1]);

len = xmul(con[i], con[i+1], con[i], con[u])/dist(con[i], con[i+1]);

if(sign(tmp - ans) < 0)}}

return ans+eps;

}

給矩形面積求周長最小

input 輸入1個數s 1 s 10 9 output 輸出最小周長。sample input 24sample output 20這道題剛開始憨憨的沒管時間用兩個for去幹被爆tle,但後來發現是高中學的乙個均值不等式,給定乙個面積去求周長的最小值,可以用ab a b 2 4,用這個不等式當a ...

求最大的矩形面積

第一次想的時候,想到了動態規劃,但是還有乙個複雜度更低的方法,就是採用棧的方式。第二種方法是看了厲害的人的部落格之後才理解的。它的思想就是從後往前遍歷,使用棧儲存當前遍歷到的最小值,這個值是不斷更改的,同時,沒遍歷一次,計算一次當前的面積。在做leetcode的時候發現,從後往前遍歷的題目有很多,巧...

求三個矩形的相交矩形。

給定乙個矩形結構體 struct rect 要求實現函式 rect intersectrect const rect recta,const rect recta,const rect recta 若三個矩形有相交矩形,則返回相交矩形,若沒有,則設定返回矩形的x y w h均為 1。分析 1.首先要...