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 |
疑问?下面这个代码在C++下通过 G++下WA 不知道为什么? 请管理员看看 谢谢! #include <stdio.h> #include <string.h> #include <math.h> const int N = 1010; const double INF = 1e30; const double EPS = 1e-12f; struct Point { double x, y; void set(double xx, double yy) { x = xx; y = yy; } } P[N], Q[N]; #define Max(a,b) ((a) > (b) ? (a) : (b)) #define Min(a,b) ((a) < (b) ? (a) : (b)) int n1, n2, c1, c2; double V; double cal(Point * p, double y, int c, int n) { if (y < p[c].y) return 0; double cx = p[c].x, a, b, ret = 0, h; int i; for(i = 0; i < c; ++i) { if(y >= p[i].y) { h = p[i].y - p[i+1].y; a = p[i].x; } else if(y >= p[i+1].y) { h = y - p[i+1].y; a = p[i].x + (p[i+1].x - p[i].x) * (y-p[i].y) / (p[i+1].y - p[i].y); } else h = 0; b = p[i+1].x; ret += (cx-a+cx-b) / 2.0 * h; } for(i = c; i < n-1; ++i) { if(y >= p[i+1].y) { h = p[i+1].y - p[i].y; a = p[i+1].x; } else if(y >= p[i].y) { h = y - p[i].y; a = p[i].x + (p[i+1].x - p[i].x) * (y-p[i].y) / (p[i+1].y-p[i].y); } else h = 0; b = p[i].x; ret += (a-cx+b-cx)/2*h; } return ret; } double check(double y) { return cal(P, y, c1, n1) + cal(Q, y, c2, n2); } int main() { // freopen("t.in", "r", stdin); int ntc, i; scanf("%d", &ntc); while(ntc--) { scanf("%lf", &V); scanf("%d", &n1); double min = INF; for(i = 0; i < n1; ++i) { scanf("%lf%lf", &P[i].x, &P[i].y); if(P[i].y < min) min = P[i].y, c1 = i; } scanf("%d", &n2); min = INF; for(i = 0; i < n2; ++i) { scanf("%lf%lf", &Q[i].x, &Q[i].y); if(Q[i].y < min) min = Q[i].y, c2 = i; } double lo = Min(P[c1].y, Q[c2].y), hi = Min(Min(Min(P[0].y, P[n1-1].y), Q[0].y), Q[n2-1].y); for(i = 0; i < 100; ++i) { double m = lo + (hi-lo)/2; if( check(m) >= V ) hi = m; else lo = m; } printf("%.3lf\n", lo); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator