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 |
改成stdio就对了,求解!!!!!!!In Reply To:全过了还WA附代码 Posted by:Mikucon at 2012-07-11 12:13:16 #include <stdio.h> #include <cmath> int n; double a[111],b[111],c[111],d[111]; struct point { double x,y; }; point p1,p2,p3,p4,x1,x2,x3,x4; double ans; #define eps 1.0e-8 point intersect(point a,point b,point c,point d) { point p; if(abs(c.x-d.x)>eps) { double e1=(b.y-a.y)/(b.x-a.x)-(c.y-d.y)/(c.x-d.x); double e2=c.y-b.y+b.x*(b.y-a.y)/(b.x-a.x)-c.x*(c.y-d.y)/(c.x-d.x); p.x=e2/e1; p.y=(b.y-a.y)/(b.x-a.x)*(p.x-b.x)+b.y; } else{ p.x=c.x; p.y=(b.y-a.y)/(b.x-a.x)*(p.x-b.x)+b.y; } return p; } double sur(point a,point b,point c,point d) { double s1=0.5*abs((p2.x-p1.x)*(p4.y-p1.y)-(p2.y-p1.y)*(p4.x-p1.x)); double s2=0.5*abs((p3.x-p2.x)*(p4.y-p3.y)-(p3.y-p2.y)*(p4.x-p3.x)); return s1+s2; } double max(double a,double b) { if(a>b) return a; else return b; } int main() { while(scanf("%d",&n)!=EOF) { if(n==0) break; for(int i=1;i<=n;i++) scanf("%lf",&a[i]); for(int i=1;i<=n;i++) scanf("%lf",&b[i]); for(int i=1;i<=n;i++) scanf("%lf",&c[i]); for(int i=1;i<=n;i++) scanf("%lf",&d[i]); c[0]=a[0]=b[0]=d[0]=0; a[n+1]=b[n+1]=c[n+1]=d[n+1]=1; ans=0; for(int i=1;i<=n+1;i++) for(int j=1;j<=n+1;j++) { x1.x=0;x1.y=c[i-1];x2.x=1;x2.y=d[i-1]; x3.x=b[j-1];x3.y=1;x4.x=a[j-1];x4.y=0; p1=intersect(x1,x2,x3,x4); x1.x=0;x1.y=c[i]; x2.x=1;x2.y=d[i]; x3.x=b[j-1];x3.y=1;x4.x=a[j-1];x4.y=0; p2=intersect(x1,x2,x3,x4); x1.x=0;x1.y=c[i]; x2.x=1;x2.y=d[i]; x3.x=b[j];x3.y=1;x4.x=a[j];x4.y=0; p3=intersect(x1,x2,x3,x4); x1.x=0;x1.y=c[i-1]; x2.x=1;x2.y=d[i-1]; x3.x=b[j];x3.y=1;x4.x=a[j];x4.y=0; p4=intersect(x1,x2,x3,x4); ans=max(ans,sur(p1,p2,p3,p4)); } printf("%.6lf\n",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