首先明确一点的是,所给的点(a,b)肯定在斜率为负的斜线上面使得x最小。
那么我们怎么确定是在哪一条折线呢?看下图:
每条斜率为-1的折线都可以被分成虚线间的几部分。这是使得
也就是说,是那一条折线就是
其中D为截距。
求得x。
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a,b;
scanf("%d%d",&a,&b);
if(b>a)printf("-1\n");
else
{
int k=(a/b);
if(k&1)k++;
printf("%.12f\n",(a+b)*1.0/k);
}
return 0;
}
本文探讨如何在特定条件下,通过调整折线分割方式,最小化给定点与折线之间的乘积。利用数学推导,得出计算公式,并通过代码实现。
639

被折叠的 条评论
为什么被折叠?



