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