专栏文章

题解:P13581 [NWRRC 2023] Axis-Aligned Area

P13581题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mioidqr2
此快照首次捕获于
2025/12/02 19:42
3 个月前
此快照最后确认于
2025/12/02 19:42
3 个月前
查看原文

题意与分析

给出 44 根木棍,求它们所能围成的最大的封闭图形的面积。
当输入为 2 2 4 7 时,参考下面这张图片。
此时,可以围成的最大的图形面积是 88

思路

还是观察刚才这张图片,显然还有其它围法。但之所以样例的答案是围成矩形,就说明矩形在所有围法中是最佳的。
现在,我们已经确定要围成矩形。

矩形面积公式

大家都知道矩形面积公式是 a×ba\times b,其中 a,ba,b 是长和宽。但是我们应该怎么得到矩形的长和宽呢?
假设有两条边 x,yx,y 是矩形上的对边,那么显然 x=yx=y
现在我们有一组对边 ai,aja_i,a_j,不一定满足 ai=aja_i=a_j,那么我们就需要截断其中一条线端,使它们的长度能够满足 ai=aja_i=a_j
  • 如果 aiaja_i\le a_j,那么截取 aja_j 的长度,使 aj=aia_j=a_i
  • 如果 ai>aja_i>a_j,那么截取 aia_i 的长度,使 ai=aja_i=a_j
总结出规律:x=y=min{ai,aj}x=y=\min\{a_i,a_j\}
要求我们将 a1,a2,a3,a4a_1,a_2,a_3,a_4 分成两组,分别求组内的最小值,再求乘积(面积)。题目求面积的最大值。

最优分组策略

已知 a1a2a3a4a_1\le a_2\le a_3\le a_4
  • 如果 a1,a4a_1,a_4 分成一组,其余边一组,根据公式可知结果是 S1=a1a2S_1=a_1a_2
  • 如果 a1,a3a_1,a_3 分成一组,其余边一组,根据公式可知结果也是 S2=a1a2S_2=a_1a_2
  • 如果 a1,a2a_1,a_2 分成一组,其余边一组,根据公式可知结果是 S3=a1a3S_3=a_1a_3
a3a2, a1>0a1a3a1a2S3S1=S2\because a_3\ge a_2,\ a_1>0\\ \therefore a_1a_3\ge a_1a_2\\ \therefore S_3\ge S_1=S_2
综上,将 a1,a2a_1,a_2 分成一组,a3,a4a_3,a_4 分成一组是最优分组策略。
所以求出其围成的矩形的面积,公式如下。
S=min{a1,a2}×min{a3,a4}=a1×a3S=\min\{a_1,a_2\}\times\min\{a_3,a_4\}=a_1\times a_3

代码

CPP
#include<bits/stdc++.h>
using namespace std;
int a[5];
int main(){
    for(int i=1; i<=4; i++)
        cin >> a[i];
    cout << a[1]*a[3];
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...