本文共 2211 字,大约阅读时间需要 7 分钟。
暴力过了
#include#include #include #include #include #include #include #include #include #include #include #include #include #define pi acos(-1.0)#define ll long long#define mod 1000000007#define ls l,m,rt<<1#define rs m+1,r,rt<<1|1#pragma comment(linker, "/STACK:1024000000,1024000000")using namespace std;const double g=10.0,eps=1e-7;const int N=50000+10,maxn=500+100,inf=0x3f3f3f;struct point{ double x,y;};point p[N],s[N];int n;double dir(point p1,point p2,point p3){ return (p3.x-p1.x)*(p2.y-p1.y)-(p3.y-p1.y)*(p2.x-p1.x);}double dis(point p1,point p2){ return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));}double powdis(point p1,point p2){ return (p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y);}bool comp(point p1,point p2){ double te=dir(p[0],p1,p2); if(te<0)return 1; if(te==0&&dis(p[0],p1) =2&&dir(s[top-1],s[top],p[i])>0)top--; s[++top]=p[i]; } /* for(int i=0;i
但是旋转卡壳死活过不了,
100 010000 01 1002 1999999 1009998 199100 -900200 -17999800 -17999900 -900 这组数据过不了,
#include#include #include #include #include #include #include #include #include #include #include #include #include #define pi acos(-1.0)#define ll long long#define mod 1000000007#define ls l,m,rt<<1#define rs m+1,r,rt<<1|1#pragma comment(linker, "/STACK:1024000000,1024000000")using namespace std;const double g=10.0,eps=1e-7;const int N=50000+10,maxn=500+100,inf=0x3f3f3f;struct point{ double x,y;};point p[N],s[N];int n;double dir(point p1,point p2,point p3){ return (p3.x-p1.x)*(p2.y-p1.y)-(p3.y-p1.y)*(p2.x-p1.x);}double dis(point p1,point p2){ return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));}double powdis(point p1,point p2){ return (p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y);}bool comp(point p1,point p2){ double te=dir(p[0],p1,p2); if(te<0)return 1; if(te==0&&dis(p[0],p1) =2&&dir(s[top-1],s[top],p[i])>0)top--; s[++top]=p[i]; } /* for(int i=0;i =dir(s[i],s[i+1],s[j])) j=(j+1)%top; // cout<
不知道哪里出错了,希望有路过的大神帮忙改改错
转载于:https://www.cnblogs.com/acjiumeng/p/7195242.html