zoukankan      html  css  js  c++  java
  • 洛谷1212手动枚举各种情况(缩代码成瘾)

    既然图都给了,只要讨论清楚就可以了

    ——疯狂压代码

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int ans=50000,X,Y;int x[5],y[5],p[5],q[5],a[201];bool b[5];
     4 void check(){if(X*Y<=ans)ans=X*Y,a[min(X,Y)]=max(X,Y);}
     5 void get(int k){X=0;Y=0;for(int i=1;i<=k;i++)X+=p[i],Y=max(Y,q[i]);}
     6 void dfs(int k){
     7     if(k>4){
     8         get(4);check();
     9         get(3);Y+=q[4];X=max(X,p[4]);check();
    10         get(2);Y=max(Y+q[3],q[4]);X=max(X,p[3])+p[4];check();
    11         get(2);X+=max(p[3],p[4]);Y=max(q[3]+q[4],Y);check();
    12         if(p[1]<=p[2] && ((q[3]>=q[1]+q[2])&&(p[4]<=p[2]+p[3])||(q[3]>=q[2])&&(p[1]+p[4]<=p[2]+p[3])))
    13             X=p[2]+p[3],Y=max(q[1]+q[2],q[3]+q[4]),check();
    14         return;
    15     }
    16     for(int i=1;i<=4;i++)
    17         if(!b[i])p[k]=x[i],q[k]=y[i],b[i]=1,dfs(k+1),swap(p[k],q[k]),dfs(k+1),b[i]=0;
    18 }
    19 int main()
    20 {
    21     for(int i=1;i<=4;i++) scanf("%d%d",&x[i],&y[i]);
    22     dfs(1);printf("%d
    ",ans);
    23     for(int i=1;i<=200;i++)
    24         if(a[i]*i==ans)printf("%d %d
    ",i,a[i]);
    25     return 0;
    26 }
  • 相关阅读:
    React父组件调用子组件
    ES6数组操作
    ant design mobile入坑记
    vue
    图片上传七牛
    CSS
    CSS矩形、三角形等
    使用POST下载文件
    http https协议
    前端网络必备知识
  • 原文地址:https://www.cnblogs.com/wanglichao/p/5986046.html
Copyright © 2011-2022 走看看