题解 AT5296 【[ABC159C] Maximum Volume】

· · 题解

Maximum Volume

题目大意:

给你一个立方体的三条相邻的棱长总和 L ,求该立方体的体积最大为多少(棱长不一定为整数)(答案保留 12 位小数)。

说白了就是已知 a + b + c = L ,要求 a \times b \times c 的最大值,但 abc 不一定是整数且它们大于 0

由题意得:a > 0b > 0c > 0 ,则 ans = a \times b \times c 。由均值不等式得到 a \times b \le (a^2 + b^2) / 2 ,所以 ans \le (a^2 + b^2) \times c / 2 。因此当 ans 最大时,满足 a \times b \times c = (a^2 + b^2) \times c / 2 。因为 c > 0 ,所以 a \times b = (a^2 + b^2) / 2 ,解得 a = b。同理可得,当 ans 最大时,b = c 。所以当 ans 最大时, a = b = c = \frac{L}{3} ,即 ans_{max} = (\frac{L}{3})^3

所以,代码就变得非常简单了:

#include <bits/stdc++.h>
using namespace std;

int main(){
    double l;
    scanf("%lf", &l);
    printf("%.12f\n", l/3*l/3*l/3); //这里就不多解释了,记得保留12位小数
    return 0;
}

然而事实上,本题只需简单地打一下表就可以知道这显而易见的答案 o(TヘTo)。