凸包演算法
#include#includeusing namespace std;const int n=5e5+11;
int n,m;
struct point
point(int _x,int _y):
x(_x),y(_y){}
friend inline point operator -(const point a,const point b)
friend inline int operator *(const point a,const point b)
inline int norm()
}p[n],q[n];
inline bool operator <(const point a,const point b)
inline void graham()
}inline int area()
int main()
旋轉卡殼
#include#includeusing namespace std;const int n=5e5+11;
int n,m;
inline int max(int a,int b)
struct point
point(int _x,int _y):
x(_x),y(_y){}
friend inline point operator -(const point a,const point b)
friend inline int operator *(const point a,const point b)
inline int norm()const
}p[n],q[n];
inline bool operator <(const point a,const point b)
inline void graham()
}inline int nxt(int x)
inline int area(const point a,const point b,const point c)
inline int query()
return res;
}int main()
bzoj1069
先做凸包,再列舉凸包的對角線,對於剩下的兩個凸多邊形做旋轉卡殼
#include#includeusing namespace std;typedef double db;
int n,m;
const int n=1e6+11;
struct point
point(db _x,db _y):
x(_x),y(_y){}
friend inline point operator-(const point a,const point b)
friend inline db operator*(const point a,const point b)
inline db norm()const
}p[n],q[n];
inline bool operator<(const point a,const point b)
inline void graham()
}inline int nxt(int x)
inline db abs(db x)
inline db max(db a,db b)
inline db solve()
}return ans*1.00/2.00;
}int main()
bzoj1185
先做凸包,再列舉凸包的一條邊,用旋轉卡殼做出該邊的平行線,然後用點積求矩形寬的極值(具有單調性)
複雜度o(n^2)
#include#include#include#define eps 1e-8#define inf 1000000000
using namespace std;
double ans=1e60;
int n,top;
struct p
p(double _x,double _y):x(_x),y(_y){}
friend inline bool operator<(p a,p b)
inline void graham()
}}int main()
計算幾何 幾何基礎
這章早在2017年寒假就在培訓的時候由來自清華的hta老師上過了 但是本蒟蒻那時候並不是懂的太多 所以這週ww老師又上了一遍 大概記錄一下 大概就跟高中必修4的平面向量差不多 有上過的應該都會 a x1,y1 b x2,y2 a b x1x2 y1y2 a b a b cos a,b 運用 若a與b...
計算幾何基礎
1 向量叉積 ab ac 0 ac在ab的 逆時針方向,否則順時針 0 a b c 共線 class point p q 為向量 a,b,c為點 p q x1 y2 x2 y1 p a b q c a 即 x1 x0 y2 y0 x2 x0 y1 y0 計算 ab ac 的叉積 double cor...
計算幾何基礎提綱
一 約定格式 a 點 向量的表示 b 封裝向量加減法 點積 叉積 double mult struct point p1,struct point p2,struct point p3 double dis struct point p1,struct point p2 c 線段 兩個點隔得很遠,取...