首页 > 其他 > 详细

分类讨论——NCPC 2019 B

时间:2020-05-01 19:06:24      阅读:55      评论:0      收藏:0      [点我收藏+]

把情况考虑清楚,分类讨论不太复杂

第一种情况:1+1+1形式

第二种情况:1+2形式

然后枚举每个矩形边长a作为底还是边长b作为底就行

#include<bits/stdc++.h>
using namespace std;
#define ll long long 

ll p[4][2];

int main(){
    int t;cin>>t;
    while(t--){
        for(int i=1;i<=3;i++){
            cin>>p[i][0]>>p[i][1];
            if(p[i][0]>p[i][1])
                swap(p[i][0],p[i][1]);
        }
        ll w,h,ans=0x3f3f3f3f3f3f3f3f;
        for(int i=0;i<2;i++)
            for(int j=0;j<2;j++)
                for(int k=0;k<2;k++){
                    w=p[1][i]+p[2][j]+p[3][k];
                    h=max(p[1][i^1],max(p[2][j^1],p[3][k^1]));
                    ans=min(ans,h*w);
                }
        
        for(int i=0;i<2;i++){
            for(int j=0;j<2;j++)
                for(int k=0;k<2;k++){
                    //p[1]在最左边
                    w=p[1][i]+max(p[2][j],p[3][k]);
                    h=max(p[1][i^1],p[2][j^1]+p[3][k^1]);
                    ans=min(ans,w*h);
                    
                    //p[2]在最左边
                    w=p[2][i]+max(p[1][j],p[3][k]);
                    h=max(p[2][i^1],p[1][j^1]+p[3][k^1]);
                    ans=min(ans,w*h);
                    
                    //p[3]在最左边
                    w=p[3][i]+max(p[1][j],p[2][k]);
                    h=max(p[3][i^1],p[1][j^1]+p[2][k^1]);
                    ans=min(ans,w*h);
                    
                }
        } 
        
        cout<<ans<<\n;
    }
}

 

分类讨论——NCPC 2019 B

原文:https://www.cnblogs.com/zsben991126/p/12814242.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!