可以看出,達(dá)到最大size的時(shí)候一定是某個(gè)蛋糕剛好被分完,如果再大一點(diǎn)的話,肯定就不能解決了。
比這個(gè)size小,則無論如何都可以解決。
所以可以通過二分答案的方法來解決這個(gè)問題。就很簡(jiǎn)單了。
注意:這題精度要求很高,pi的值需要通過acos(-1)來求,eps要到e-5。
我用C++提交能夠AC,g++一直WA。
嗎的,數(shù)據(jù)能不能寬容點(diǎn)。
#include <stdio.h>
#include <math.h>
#include <algorithm>

using namespace std;

int N, F;
double pi = acos(-1.0);
double pie[10032];
double sum, maxp;

int main()


{
double l, r, m;
int i, t, c;

scanf("%d", &t);

while (t--)
{
scanf("%d%d", &N, &F);
F++;
maxp = sum = 0;

for (i = 0; i < N; i++)
{
scanf("%d", &c);
pie[i] = c*c*pi;
maxp = max(maxp, pie[i]);
sum += pie[i];
}
l = maxp / F;
r = sum / F;

while (l + 0.00001 < r)
{
m = (l + r) / 2;
c = 0;
for (i = 0; i < N; i++)
c += floor(pie[i] / m);
if (c < F)
r = m;
else
l = m;
}
printf("%.4lf\n", l);
}

return 0;
}



