本文主要是介绍HDU 2438 Turn the corner 三分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意:给一些几何数据,问车能不能过去。
想法:
由图可知,只要先确定y0=Y,那么可以求得x0然后比较x0和-Y的大小,如果x0大于-Y,表示可以通过这个角度。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define pi acos(-1.0)
#define eps 1e-9
using namespace std;
double x,y,l,w;
double aabs(double a)
{if(a>0) return a;return -a;
}
double cal(double mid)
{double y0=(x-l*sin(mid)-w/cos(mid))/tan(mid);return y0;
}
int main()
{while(cin>>x>>y>>l>>w){if(x<w||y<w) {printf("no\n");continue;}double lft=0,rht=pi/2;while(rht-lft>eps){double mid=(lft+rht)/2;double midd=(mid+rht)/2;if(cal(mid)<cal(midd)){rht=midd;}else lft=mid;}if(cal(lft)>-y) printf("yes\n");else printf("no\n");}return 0;
}
这篇关于HDU 2438 Turn the corner 三分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!