LA3263計算幾何 尤拉定理的應用 線段交判邊

2022-09-15 22:36:19 字數 2259 閱讀 4814

1

/*la3263計算幾何+尤拉定理的應用+線段交判邊

2尤拉定理:頂點+邊數-面數=2

3思路:先找到列舉的範圍,減少判斷的集合,再篩選。

4巧妙之處:線段間產生的點如果被夾在原先定點的連線上,則產生一條新的邊

5易錯處:

61、給出的第乙個點和最後乙個點是重合的,所以最終有n-1個初始點

72、應該統一所有的點,在去重,因為新增點可能和給定點相同

83、結構體重載== 時注意精度處理9*/

10 #include 11 #include 12 #include

13 #include 14 #include 15 #include

16 #include 17 #include 18 #include 19 #include 20 #include 21 #include 22 #include 23 #include

24 #include 25

#define inf 0x3f3f3f3f

26#define ll long long

27#define eps 1e-7

28using

namespace

std;

2930

struct

point

3134

};35

typedef point vector;

36int dcmp(double

x)37

41bool

operator

< (const point &a, const point &b)

4245

bool

operator == (const point& a, const point &b)

4649

50 vector operator-(point a,point b)//

表示a指向b

5154 vector operator*(vector a,double

k)55

58 vector operator+(point a,point b)//

表示a指向b

5962

63double

dot(vector a,vector b)

6467

double

length(vector a)

6871

double

angle(vector a,vector b)

7275

double cross(vector a,vector b)

76double area(point a,point b,point c)//

三角形面積

7780

bool

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

8186

point getlineintersection(point p, vector v, point q, vector w)

8792

bool

onsegment(point p, point a1, point a2)

9396

int n,cas=0

;97 vectorp;

98 vectornp;

99int

main()

100

113 n--;//

這是乙個坑,因為第乙個和最後乙個點相同

114int v,e=n;//

v是輸入的頂點,e是在被分割前一定有n條邊

115for(int i=0;i)

116for(int j=i+1;j)

117122

}123

sort(np.begin(),np.end());

124int cnt=unique(np.begin(),np.end())-np.begin();

125 v=cnt;

126for(int i=0;i//

列舉每個新的點是否分割一條原來的線段,實際上,多次列舉的原因是去除多線共點的問題,不然就可以直接用數量計算出來

127132

}133 printf("

case %d: there are %d pieces.\n

",cas,e+2-v);

134}

135return0;

136 }

LA 3263 計算幾何,尤拉定理

題目大意 有n個點組成的一筆畫,問這個圖形把平面分成了幾個部分 題目解析 先把那些直線相交得出的點算出來得出點數,再把 邊數算出來,有乙個點在原來的線段上並且不與端點重合邊數就加一,因為一條線段變成了兩條線段,最後根據尤拉定理f e 2 v算出面數 ac includeusing namespace...

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 建構函式 ...