平面上有一个n个端点的一笔画,第n个端点总是和第一个端点重合,因此图示一条闭合曲线。
组成一笔画的线段可以相交,但不会部分重叠,求这些线段将平面分为几部分
包括封闭区域和无限大区域
欧拉定理:平面图的顶点数V,边数E,面数F ,V+F-E=2
顶点数包含原来节点、新增节点,可能多线共点,所以还要去重
边数包含原来的边、新增的边,
判断新增边:枚举点、边,如果点在线段上(非端点处),边数+1
判断点在线段上且非端点:点与线段端点两向量的叉积=0,点积<0
(如果是端点点积=0)
#include#include #include using namespace std;const double eps=1e-10;struct Point{ double x,y; Point(double x=0,double y=0) : x(x),y(y) { } bool operator == (const Point b) const { return fabs(x-b.x)