题解:P14643 [POI 2025/2026 #1] 托运 / Carry-on luggage

· · 题解

题目传送门

比较久没看到这样比较简单的题了。

思路

注意到对于每条航线可以任意旋转,所以我们可以先对每条航线的长宽高进行从小到大的排序,接着对每个取最小值,再将三个最小值乘起来就可以了。

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,X=1e6+1,Y=1e6+1,Z=1e6+1,a[4];//初始化
signed main(){
    scanf("%lld",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%lld%lld%lld",&a[1],&a[2],&a[3]);
        sort(a+1,a+4);//排序
        X=min(X,a[1]);
        Y=min(Y,a[2]);
        Z=min(Z,a[3]);//取最小值
    }
    printf("%lld",X*Y*Z);//输出乘积
}