1 条题解

  • 0
    @ 2025-8-24 22:20:38

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar MZY666
    「It's time to see what I can do_To test the limits and break through.」

    搬运于2025-08-24 22:20:38,当前版本为作者最后更新于2020-04-20 22:19:51,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    原题传送门在窝的博客中食用更佳

    【 题意概括 】

    给定四个线段的长度 aabbccdd,求用它们围组成的长方形最大面积为多少。

    【 思路 】

    与第一篇题解相同,这里再讲详细一点:

    S长方形=S_{\text{长方形}}=×\times 宽。

    既然要最大面积,那就尽量要最大的长以及最大的宽。

    宽肯定是比长要小(或等)的。

    想一想:这里的长方形中每一组对边的较小的那一条肯定是使得较长的那一段有一段发挥不到增大(也就浪费了)。

    所以就得尽量使“浪费”减小。

    那么可以让最小的那条线段作为一条宽,第二小的作为其对边(相比另外两条长的损耗小);

    第二大的作为一条长,最大的作为长的对边。

    代码实现见下。

    【 代码实现 + 注释 】

    #include<bits/stdc++.h>//万能头文件可好 
    using namespace std;
    int a[5];//数组定义在外面方便一些
    int main(){
    	for(int i=1;i<=4;i++)cin>>a[i];//输入a,b,c,d
    	sort(a+1,a+1+4);//排序
    	cout<<a[1]*a[3]<<endl;//输出长*宽的和。
    	return 0;//over
    }
    

    来点花样,挑战本题最短C++代码(不喜勿喷):

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

    最后,由于作者自愿禁言了,如果有建议请私信。否则将无法回复您哦!

    完结撒花~(疯狂暗示 AOA

    • 1

    信息

    ID
    5436
    时间
    1000ms
    内存
    32MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者