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 所...