题目链接:
题目大意:给你一个长为L,宽为W的纸片,四个角剪掉边长为x的正方形,如下图所示,然后折成一个无盖的纸盒,求纸盒最大体积。
解题思路:我们可以知道体积V(x)=(L-2*x)*(W-2*x)*x求导得到f(x)=12x^2-4*(L+W)*x^2+L*W,V(x)的图像如下所示
所以我们知道极大值点是f(x)两个(或一个)零点中x值较小的那个点,可以通过求根公式求得。
代码:
1 #include2 #include 3 #include 4 using namespace std; 5 6 double L,W; 7 8 double fun(double x){ 9 return x*(L-2*x)*(W-2*x);10 }11 12 int main(){13 int T;14 scanf("%d",&T);15 int cas=0;16 while(T--){17 scanf("%lf%lf",&L,&W);18 double pos=(4*(L+W)-sqrt(16*(L+W)*(L+W)-4*12*L*W))/24.0;19 printf("Case %d: %lf\n",++cas,fun(pos));20 } 21 }