#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
#define BOTTOM 0
#define LEFT 1
#define RIGHT 2
#define TOP 3
struct point{
double x,y;
point(){}
point(double x,double y):x(x),y(y){}
point operator + (point &p){
return point(x+p.x,y+p.y);
}
point operator - (point &p){
return point(x-p.x,y-p.y);
}
point operator * (double k){
return point(x*k,y*k);
}
point operator / (double k){
return point(x/k,y/k);
}
};
struct segment{
point p1,p2;
};
struct endpoint{
point p;
int seg,st;
endpoint(){}
endpoint(point p,int seg,int st):p(p),seg(seg),st(st){}
bool operator < (const endpoint &ep)const{
if(p.y==ep.p.y){
return st<ep.st;//y相同时,按照下断点,左端点,右端点,上端点的顺序排列
}else{
return p.y<ep.p.y;
}
}
};
endpoint ep[
线段相交交点个数
最新推荐文章于 2024-07-18 21:59:54 发布
该博客介绍了一个算法,用于计算一组线段在曼哈顿距离下的相交交点个数。通过将线段转换为端点并排序,然后使用集合来跟踪水平线段,最终计算出相交的线段对数。
摘要由CSDN通过智能技术生成