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 |
求数据....哪个朋友用旋转卡壳A了 请发代码到我油箱 谢谢#include <iostream> #include <math.h> #include <algorithm> using namespace std; #define MAX 50003 #define esp 1e-10 struct poi { double x,y; }a[MAX]; int n,d[MAX],p; bool u[MAX]; bool com(poi a,poi b) { if(a.y!=b.y) return a.y<b.y; return a.x<b.x; } void init() { int i; scanf("%d",&n); for(i=1;i<=n;i++) scanf("%lf%lf",&a[i].x,&a[i].y); sort(a+1,a+1+n,com); } double cha(double x1,double y1,double x2,double y2) {return x1*y2-x2*y1;} void tubao() { int i; memset(u,0,sizeof(u)); d[1]=1; d[2]=p=2; u[2]=true; for(i=3;i<=n;i++) { while( p>1 && cha( a[d[p]].x-a[d[p-1]].x , a[d[p]].y-a[d[p-1]].y , a[i].x-a[d[p]].x , a[i].y-a[d[p]].y)>=0) u[d[p--]]=false; d[++p]=i; u[i]=true; } for(i=n;i>0;i--) { if(!u[i]) { while(cha( a[d[p]].x-a[d[p-1]].x , a[d[p]].y-a[d[p-1]].y , a[i].x-a[d[p]].x , a[i].y-a[d[p]].y)>esp) u[d[p--]]=false; d[++p]=i; u[i]=true; } } } double ll(double x) {return x*x;} double dis(poi a,poi b) {return ll(a.x-b.x)+ll(a.y-b.y);} void slove() { int i,p1; bool f; double ma=0,l1,l2; if(n==2) ma=dis(a[1],a[2]); else { p1=2; for(i=1;i<=p;i++) { l1=dis(a[d[i]],a[d[p1]]); do { f=false; while(1) { l2=dis(a[d[i]],a[d[p1%p+1]]); if(l1<=l2) { f=true; l1=l2; p1=p1%p+1; } else break; } }while(f); if(ma<l1) ma=l1; } } printf("%.0lf\n",ma); } int main() { init(); tubao(); slove(); return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator