给定一个盒子,选取一个x值,使得盒子体积最大。
体积公式为(a-2*x)(b-2*x)*x,那么这是一个一元三次方程。
脑子里突然跳出来一个三分法..用了三分真尼玛过了
我现在还在惊吓之中,不理解...
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define mod 1000007
#define inf 0x3f3f3f3f
#define N 100100
using namespace std;
double a,b;
double v(double x)
{
return (a-2*x)*(b-2*x)*x;
}
int main()
{
int t;
scanf("%d",&t);
for(int cas=1; cas<=t; cas++)
{
scanf("%lf %lf",&a,&b);
double l=0.0,r=min(a,b)/2;
double mid,midmid;
while(l+0.0000000001<=r)
{
mid=(l+r)/2;
midmid=(mid+r)/2;
double s1=v(mid);
double s2=v(midmid);
if(s1>=s2)
r=midmid;
else
l=mid;
}
printf("Case %d: %.8f\n",cas,v(mid));
}
return 0;
}