ACM 計算幾何

2021-08-22 15:11:35 字數 2480 閱讀 6864

1.找凸包的最小寬度

#include 

using

namespace

std;

double eps=1e-10;

//考慮誤差的加法運算

double add(double a,double b)

struct p

p(double x,double y):x(x),y(y){}

p operator +(p p)

p operator -(p p)

p operator *(double d)

double dot(p p)

double det(p p)

};p ps[2020000];

bool cmp(p a,p b)

for(int i=n-2,t=k;i>=0;i--)

qs.resize(k-1);

return qs;

}//叉積

double cross(p a,p b,p c)

//距離的平方

double dist(p a,p b)

int main()

vector

qs=convex_hull(ps,n);

n=qs.size();

if(n==2)

double ans=1e20;

int temp=2;

int u;

for(int i=0;idouble d=sqrt(dist(qs[i],qs[(i+1)%n]));

// printf("i=%d\n",i );

u=temp;

// printf("%d %d %d\n",i,(i+1)%n,u );

double emm=0;

while(cross(qs[i],qs[(i+1)%n],qs[u])<=cross(qs[i],qs[(i+1)%n],qs[(u+1)%n]))

temp=u;

emm=max(emm,cross(qs[i],qs[(i+1)%n],qs[u])/d);

//面積最大

ans=min(ans,emm);

}printf("%.15lf\n",ans );

return

0;}

2.踢足球

s1->t1

s2->t2

軌跡是否可以不相交

場上還有其他隊員可以中轉

需要預處理凸包~

一開始就不相交 直接特判

否則如果四個點都在凸包上 false

其他情況true

#include 

using

namespace

std;

double eps=1e-10;

int sgn(double x)

//考慮誤差的加法運算

double add(double a,double b)

struct p

p(double x,double y):x(x),y(y){}

p operator +(p p)

p operator -(p p)

p operator *(double d)

double dot(p p)

double det(p p)

bool

operator ==(p p)

};p ps[2020000],s1,s2,t1,t2;

bool cmp(p a,p b)

for(int i=n-2,t=k;i>=0;i--)

qs.resize(k-1);

return qs;

}//叉積

double cross(p a,p b,p c)

//距離的平方

double dist(p a,p b)

bool intersect(p a,p b,p c,p d)

bool intersect_self(p a,p b,p c,p d)

//跨立實驗

if((a-d).det(c-d) * (b-d).det(c- d)>0||

(c-a).det(b-a)*(d-a).det(b-a)>0

)return

true;

}struct mapcmp

int main()

s1=ps[0];

t1=ps[1];

s2=ps[2];

t2=ps[3];

vector

qs=convex_hull(ps,n);

n=qs.size();

bool succ=false;

if(!intersect(s1,t1,s2,t2))

else

if(cnt==4)

else

}if(succ)

else

}return

0;}

計算幾何常用演算法 ACM

複製自 1.向量減法 設二維向量 p x1,y1 q x2,y2 則向量減法定義為 p q x1 x2 y1 y2 顯然有性質 p q q p 如不加說明,下面所有的點都看作向量,兩點的減法就是向量相減 2.向量叉積 設向量p x1,y1 q x2,y2 則向量叉積定義為 p q x1 y2 x2 ...

ACM計算幾何 三維幾何模板

三維幾何函式庫 include define eps 1e 8 define zero x x 0?x x eps vlen xmult subt p,s.b subt p,s.c eps vlen xmult subt p,s.c subt p,s.a eps int dot inplane ex...

ACM計算幾何 叉積應用

目錄 定義性質 應用判斷點與直線的相對位置 判斷線段與直線的位置關係 判斷直線與直線的位置關係 判斷線段與線段的位置關係 判斷多邊形是否是凸包 判斷點是否在凸多邊形內 若 oa x1,y1 o b x2,y 2 定義叉積 oa 如圖是一種簡單情況,叉積表示的面積即最大的矩形面積減去p1 p2t3 所...