[ARC013B] 引越しできるかな? 题解

· · 题解

题目大意:输入 n 个长方体,输出能分别装下这 n 个长方体的盒子的最小体积。

大概思路:按每个长方体的长宽高的大小顺序排序,将排序后的数据从大到小命名为长、宽、高,分别求出所有长方体的长、宽、高的最大值,求他们的乘积。

证明:因为长方体的长宽高按任意顺序交换不改变长方体大小,题目也默许对其进行翻转,所以思路成立。

代码实现:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n, a, b, c, x = 0x7f, x2, x3 = -1, max1 = -1, max2 = -1, max3 = -1;
   cin >> n;
   for(int i = 1;i <= n;++i){
       cin >> a >> b >> c;
       x = min(min(a, b), c);//求最小
       x3 = max(max(a, b), c);//求最大
       x2 = a + b + c - x - x3;//剩下的值
       max1 = max(max1, x);//目前最大值
       max2 = max(max2, x2);
       max3 = max(max3, x3);
   }
   cout << max1 * max2 * max3 << endl;//求解
   return 0;
}

不知道为什么题解界面未显示,重交一遍,请管理见谅