LA 3263 計算幾何,尤拉定理

2021-08-01 03:45:49 字數 817 閱讀 3539

題目大意:有n個點組成的一筆畫,問這個圖形把平面分成了幾個部分;

題目解析:先把那些直線相交得出的點算出來得出點數,再把 邊數算出來,有乙個點在原來的線段上並且不與端點重合邊數就加一,因為一條線段變成了兩條線段,最後根據尤拉定理f=e+2-v算出面數;

ac**:

#includeusing namespace std;

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)

//點在直線上的投影

point getlineprojection(point p,point a,point b)

//判斷兩直線是否規範相交

bool segmentproperintersection(point a1,point a2,point b1,point b2)

bool onsegment(point p,point a1,point a2)

//計算多邊形的有向面積

double polygonarea(point* p,int n)

{ double area=0;

for(int i=1;i

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 尤拉定理

include include include include include include using namespace std const int maxn 310 const int maxe 100000 const int inf 0x3f3f3f struct point 建構函式 ...

LA 3263 細節處理,尤拉定理

大概就是給你若干個點描述乙個軌跡,這個軌跡的終點一定是和起點重合的 然後問你分成了幾個平面區域 這個問題用到了尤拉定理,妙啊!平面圖的尤拉定理 不得不說尤拉牛逼啊 e是稜的個數,其實可以理解成邊,f是區域的個數,這裡理解為邊劃分成的區域,e是頂點,也就是圖論中的頂點。至於什麼是平面圖,不解釋了 然後...