已退役


私信TA

用户名:15893197790

访问量:13519

签 名:

努力学习,积极生活。

等  级
排  名 384
经  验 4987
参赛次数 0
文章发表 43
年  龄 0
在职情况 学生
学  校 南京大学
专  业 计算机科学与技术

  自我简介:

已退役。研究生方向为AI+软件工程,欢迎学术交流!

解题思路:三个方块各自横竖放的情形有2种,也就是一共2*2*2=8种情形。从左到右(因为从下到上等价于8种中的其它情形从左到右)排列方块,接下来就是几个简单的讨论而已。

注意事项:

参考代码:

#include<bits/stdc++.h>

using namespace std;

#define fir first

#define sec second

#define pii pair<int,int> 

int t;

int a[10];

int ans=12345678;

pair<int,int> pair1[5];

bool cmp(pii &x,pii &y){

return x.fir>y.fir;

int getans(int a1,int b1,int a2,int b2,int a3,int b3){

pair1[1].fir=a1;

pair1[1].sec=b1;

pair1[2].fir=a2;

pair1[2].sec=b2;

pair1[3].fir=a3;

pair1[3].sec=b3;

sort(pair1+1,pair1+3+1,cmp);//按长从大到小排列

a1=pair1[1].fir;

b1=pair1[1].sec;

a2=pair1[2].fir;

b2=pair1[2].sec;

a3=pair1[3].fir;

b3=pair1[3].sec;

if(a1==a2&&a2==a3)return 4;

if(a1==a2||a2==a3)return 6;

if(a1==a2+a3){

if(b2==b3){

return 4;

}

else{

return 6;

}

}

if(b2==b3){

return 6;

}

return 8;

}

int main(){

scanf("%d",&t);

while(t--){

ans=12345678;

scanf("%d%d%d%d%d%d",&a[1],&a[2],&a[3],&a[4],&a[5],&a[6]);

int a1,b1,a2,b2,a3,b3;

for(int i=1;i<=2;i++){

a1=a[i];b1=a[1+2-i];

for(int j=3;j<=4;j++){

a2=a[j];b2=a[3+4-j];

for(int k=5;k<=6;k++){

a3=a[k];b3=a[5+6-k];

ans=min(ans,getans(a1,b1,a2,b2,a3,b3));

}

}

}

printf("%d\n",ans);

}

return 0;


 

0.0分

4 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区