HDU 2438 Turn the corner (计算几何 + 三分)

题目链接:?pid=2438题目大意:就是给出如图4个参数,,问车子能不能拐过弯题目分析:推公式,用角度表示出拐弯时骑车离拐点垂直距离最远的点到拐点所在边的距离h,很明显h是凸性的函数,三分角度,求最值,如果最值小于y则可以通过,h = (l * cos(a) + w * sin(a) – x) * (tan(a) + w * cos(a))#include <cstdio>#include <cmath>double const PI = acos(-1.0);double const EPS = 1e-7;double x, y, l, w, s, h;double cal(double a){s = l * cos(a) + w * sin(a) – x;return s * tan(a) + w * cos(a);}int main(){double le, ri, mid1, mid2;while(scanf("%lf %lf %lf %lf", &x, &y, &l, &w) != EOF){le = 0.0;ri = PI / 2;while(fabs(ri – le) > EPS){mid1 = (le + ri) / 2;mid2 = (mid1 + ri) / 2;if(cal(mid1) >= cal(mid2))ri = mid2;elsele = mid1;}if(cal(mid1) <= y)printf("yes\n");elseprintf("no\n");}}

朋友,为了幸福,请你保持一副热爱生活的心肠,

HDU 2438 Turn the corner (计算几何 + 三分)

相关文章:

你感兴趣的文章:

标签云: