Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
求凸包之后n*n过了 RC就运行错误QWQ#include<iostream> #include<cstdlib> #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> #include<string> #include<sstream> #include<queue> #define eps 1e-8 using namespace std; int n,tp1,tp2; vector <int> Q; double ans=0; struct point{ double x,y; }tp3,tp4,P[50012]; double Xmult(point c,point a,point b) { return (a.x-c.x)*(b.y-c.y)-(a.y-c.y)*(b.x-c.x); } double DT(point E,point F) { //cout<<E.x<<" "<<E.y<<" "<<F.x<<" "<<F.y<<" "<<endl; return (E.x-F.x)*(E.x-F.x)+(E.y-F.y)*(E.y-F.y); } bool cmp(point a,point b) { return (Xmult(P[0],a,b)>eps||(Xmult(P[0],a,b)>-eps&&a.y<b.y)||(Xmult(P[0],a,b)>-eps&&a.y<=b.y&&a.x<=b.x)); } int main() { tp3.x=10086; tp3.y=10086; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%lf%lf",&P[i].x,&P[i].y); if(tp3.y>P[i].y||(tp3.x>P[i].x&&tp3.y>=P[i].y)){ tp3=P[i]; tp1=i; } } P[tp1]=P[0]; P[0]=tp3; sort(P+1,P+n,cmp); tp1=0; for(int i=0;i<n;i++){ if(tp1<=2){ Q.push_back(i); tp1++; continue; } while(tp1>=3&&Xmult(P[Q[tp1-2]],P[Q[tp1-1]],P[i])<0){ Q.pop_back(); tp1--; } Q.push_back(i); tp1++; } //cout<<"----------------"<<endl; //for(int i=0;i<tp1;i++){ // cout<<P[Q[i]].x<<" "<<P[Q[i]].y<<endl; //} //cout<<endl<<endl; tp3.y=-10086; /* for(int i=0;i<tp1;i++){ if(P[Q[i]].y>tp3.y){ tp3.y=P[Q[i]].y; tp2=i; } } */ //RC tp2=1; Q.push_back(Q[0]); tp1++; for(int i=0;i<tp1;i++){ while(Xmult(P[Q[i]],P[Q[i+1]],P[Q[tp2]])<Xmult(P[Q[i]],P[Q[i+1]],P[Q[tp2+1]])){ tp2=(tp2+1)%tp1; } // cout<<tp2<<" "<<i<<endl; // cout<<P[Q[tp2]].x<<" "<<P[Q[tp2]].y<<" + "<<P[Q[i]].x<<" "<<P[Q[i]].y<<" "<<endl; // cout<<DT(P[Q[i]],P[Q[tp2]])<<endl; // cout<<endl; ans=max(ans,max(DT(P[Q[i]],P[Q[tp2]]),DT(P[Q[i+1]],P[Q[tp2+1]]))); // cout<< } printf("%.0lf\n",ans); /*(n*n) for(int i=0;i<tp1;i++){ for(int j=0;j<tp1;j++){ ans=max(ans,DT(P[Q[i]],P[Q[j]])); } } printf("%.0lf",ans);*/ return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator