题解:P14601 [NWRRC 2025] Bounding Boxes
题目大意
给定
解法
对于每个包装盒:
- 将其三个尺寸从小到大排序;
- 这样得到的三元组
(a_i, b_i, c_i) 表示:- 能放入该盒子的纪念品盒子的最小边最多为
a_i 。 - 中间边最多为
b_i 。 - 最大边最多为
c_i 。
- 能放入该盒子的纪念品盒子的最小边最多为
对于所有包装盒:
- 取所有最小边的最小值:
A = \min(a_i) 。 - 取所有中间边的最小值:
B = \min(b_i) 。 - 取所有最大边的最小值:
C = \min(c_i) 。
最终答案就是
为什么这样可行?
- 因为对于任意包装盒,排序后的三个尺寸分别对应了能放入该盒子的纪念品盒子的三个尺寸的上限。
- 取所有包装盒对应位置的最小值,就保证了纪念品盒子能放入所有包装盒。
Code
#include <bits/stdc++.h>
using namespace std;
int n,v[3],a,b,c;
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
a=b=c=INT_MAX;//赋值为极大值
cin>>n;
for(int i=1;i<=n;i++){
cin>>v[0]>>v[1]>>v[2];
sort(v+0,v+3);
a=min(a,v[0]);
b=min(b,v[1]);
c=min(c,v[2]);
}
cout<<a*b*c;
}