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

· · 题解

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

双倍经验。

solution

发现行李箱可以旋转,故每个包装盒的尺寸就是由排序后的三条棱所限制的。

那么思路就有了。

对每个行李箱的三边排序,取所有行李箱排序后每条边的最小值作为行李箱的棱长,它们的乘积就是最大的体积。

AC code

#include <bits/stdc++.h>
#define debug(a) cerr << (#a) << " = " << (a) << endl;
#define rep(i, a, b) for (int i = (a); i <= (b); i++)
#define int long long
#define maxn 100010
#define endl '\n'
using namespace std;

int n, x, y, z, a[maxn];
signed main() {
    cin >> n;
    x = y = z = LLONG_MAX;
    for (int i = 1; i <= n; i++) {
        cin >> 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]);
    }
    cout << x * y * z << endl;
    return 0;
}