题解 CF578A 【A Problem about Polyline】

· · 题解

这道题看起来简单,但不易推导。

思路相当简单,首先 a<b 无解,然后就要分两种情况了:

(a+b,0)

(a-b,0)

所以可得答案为:

\frac{a+b}{2*\frac{a+b}{2*b}}

\frac{a-b}{2*\frac{a+b}{2-b}}

中的较小者

很明显,第一个式子会大于第二个,所以也不需要求 minimum 了。

代码相当简短:

#include<cstdio>
#define ll long long

int main(){
    ll a,b;
    scanf("%lld%lld",&a,&b);
    if(a<b)return printf("-1"),0;
    printf("%.12lf",(a+b)/(2.0*((a+b)/(2*b))));//*2.0是为了强转成double类型的数据
    return 0;
}