• 分类讨论——NCPC 2019 B


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

    第一种情况: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<<'
    ';
        }
    }
  • 相关阅读:
    微信红包开发
    第一次开博客,留此纪念
    数据结构--树(遍历,红黑,B树)
    c++之vector
    动态规划求解最长公共子序列问题
    c++之map
    k-折交叉验证(k-fold crossValidation)
    prim算法
    快速排序算法
    浙大机试题目
  • 原文地址:https://www.cnblogs.com/zsben991126/p/12814242.html
Copyright © 2020-2023  润新知