#include#includeview code#include
#include
#include
#include
using
namespace
std;
const
int maxn = 310
;const
int maxe = 100000
;const
int inf = 0x3f3f3f
;struct
point //
建構函式
};typedef point vector;
vector
operator + (vector a , vector b)
vector
operator - (vector a , vector b)
vector
operator * (vector a , double p)
vector
operator / (vector a , double p)
bool
operator
< (const point& a,const point&b)
const
double eps = 1e-10
;int dcmp(double
x)bool
operator == (const point& a, const point&b)
///向量(x,y)的極角用atan2(y,x);
double dot(vector a, vector b)
double length(vector a)
double angle(vector a, vector b)
double cross(vector a, vector b)
double area2(point a,point b,point c)
///向量的逆時針旋轉,rad 為旋轉的角;
vector rotate(vector a, double rad)
///特殊的,下面函式計算向量的單位法向量,即左旋90,在長度歸一化;
vector normal(vector a)
///直線用引數式 p = p'+ t * v;p'為直線上一點,v為方向向量;
///t不受限制,為直線,t>0 為射線, 0=
///推導暫時不會,下面計算直線p+tv和q+tw的交點。呼叫前先確保兩直線有唯一交點;即判定cross(v,w) 非0;
point getlineintersecion(point p, vector v,point q,vector w)
///求點到直線的距離,利用h*|ab| == ab(向量) * ap(向量);
double
distancetoline(point p,point a,point b)
///double
distancetosegment(point p,point a,point b)
///point getlineprojection(point p,point a,point b)
///判定線段是否規範相交;
bool
segmentproperintersection(point a1,point a2,point b1,point b2)
///如果允許在端點處相交:c1和c2都是0,表示兩線段共線;如果只有其中乙個為0,則一條線段的端點在另一條線段上;
///下面的**判斷乙個點p是否在一條線段ab上(不包括a,b點);
bool
onsegment(point p,point a,point b)
///多邊形
///求面積
double polygonarea(point* p,int
n)
return area/2;}
intmain()
n--;
int vcnt = n, ecnt =n;
for(int i=0;i)
for(int j=i+1;j)
}sort(v,v+vcnt); ///
排序等會好去重;
vcnt = unique(v,v+vcnt) - v; ///
求出不重複的點的個數;
for(int i=0;i)
for(int j=0;j)
if( onsegment(v[i],p[j],p[j+1
]) )
ecnt++;
printf(
"case %d: there are %d pieces.\n
",t++,ecnt+2-vcnt);
}return0;
}
LA 3263 尤拉定理
include include includeusing namespace std const double eps 1e 10 int dcmp double x struct point typedef point vector vector operator const vector a,c...
LA 3263 計算幾何,尤拉定理
題目大意 有n個點組成的一筆畫,問這個圖形把平面分成了幾個部分 題目解析 先把那些直線相交得出的點算出來得出點數,再把 邊數算出來,有乙個點在原來的線段上並且不與端點重合邊數就加一,因為一條線段變成了兩條線段,最後根據尤拉定理f e 2 v算出面數 ac includeusing namespace...
LA 3263 細節處理,尤拉定理
大概就是給你若干個點描述乙個軌跡,這個軌跡的終點一定是和起點重合的 然後問你分成了幾個平面區域 這個問題用到了尤拉定理,妙啊!平面圖的尤拉定理 不得不說尤拉牛逼啊 e是稜的個數,其實可以理解成邊,f是區域的個數,這裡理解為邊劃分成的區域,e是頂點,也就是圖論中的頂點。至於什麼是平面圖,不解釋了 然後...