本文共 1348 字,大约阅读时间需要 4 分钟。
直接写的裸的半平面交,已经有点背不过模板了。。。
这题卡精度,要用long double ,esp设1e-20。。。
#include #include #include #include #include #include #include #define N 20005#define double long double#define inf 1e100using namespace std;int n;const double eps = 1e-20;struct point// 点&向量 { double x,y; point(){}; point(double _x,double _y) { x=_x;y=_y; }}p[N];// 点减点=向量 point operator - (point a,point b){ return point(a.x-b.x,a.y-b.y);}// 向量+向量=向量 点+向量=点point operator + (point a,point b){ return point(a.x+b.x,a.y+b.y);}// 向量数乘point operator * (point a,double b){ return point(a.x*b,a.y*b);}point operator / (point a,double b){ return point(a.x/b,a.y/b);}// 叉积 double cross(point a,point b){ return a.x*b.y-a.y*b.x;}int dcmp(double x){ if(max(x,-x) ,int>mp;vector ss[N];int main(){// freopen("in.txt","r",stdin); lines[++cnt]=line(point(inf,inf),point(-1,0),0); lines[++cnt]=line(point(0,inf),point(0,-1),0); lines[++cnt]=line(point(0,0),point(1,0),0); lines[++cnt]=line(point(inf,0),point(0,1),0); // 保证答案为空集或一个凸多边形 scanf("%d",&n);int mx=0;int ans=0; for(int i=1;i<=n;i++)scanf("%d",&pos[i]),mx=max(mx,pos[i]); for(int i=1;i<=n;i++)scanf("%d",&v[i]); for(int i=1;i<=n;i++) {// if(i==6501){cout< <<' '< <
转载于:https://www.cnblogs.com/ezyzy/p/6441454.html