题面

题意:给你一个2*2的魔方,给你每个面每个小块的颜色,一共24个,然后问你能否在一步之内还原.

题解:手动在纸上画,推出每种变化对应的置换,显然,一共有6种,而且可以当成3种,(具体哪3种,就是绕x,y,z轴转一次的),另外一个方向,就是转三次就行了

而且你也不需要考虑什么上面转了下面转,相对关系是一样的

写的时候犯了个错,手写的u,v,r分不清楚了.....

转一次会有12个小面发生变化,写的时候可以只写8个面,因为有一个面的位置变了,

但是我们只问一步之内能不能还原,那一面的都没有到其他面,所以不影响也就是我注释部分,

   记得一进来就判这个魔方是不是已经是还原好的.

 #include<bits/stdc++.h>
using namespace std;
int T,f,a[],b[],x[];
int ok()
{
for (int i=;i<=;i++) if (x[i]!=x[]) return ;
for (int i=;i<=;i++) if (x[i]!=x[]) return ;
for (int i=;i<=;i++) if (x[i]!=x[]) return ;
for (int i=;i<=;i++) if (x[i]!=x[]) return ;
for (int i=;i<=;i++) if (x[i]!=x[]) return ;
for (int i=;i<=;i++) if (x[i]!=x[]) return ;
return ;
}
int okk()
{
for (int i=;i<=;i++) if (b[i]!=b[]) return ;
for (int i=;i<=;i++) if (b[i]!=b[]) return ;
for (int i=;i<=;i++) if (b[i]!=b[]) return ;
for (int i=;i<=;i++) if (b[i]!=b[]) return ;
for (int i=;i<=;i++) if (b[i]!=b[]) return ;
for (int i=;i<=;i++) if (b[i]!=b[]) return ;
return ;
}
void z1()
{
/*x[2]=a[1];
x[4]=a[2];
x[1]=a[3];
x[3]=a[4];*/
x[]=a[];
x[]=a[];
x[]=a[];
x[]=a[];
x[]=a[];
x[]=a[];
x[]=a[];
x[]=a[];
}
void z2()
{
/*x[21]=a[23];
x[23]=a[24];
x[22]=a[21];
x[24]=a[22];*/
x[]=a[];
x[]=a[];
x[]=a[];
x[]=a[];
x[]=a[];
x[]=a[];
x[]=a[];
x[]=a[];
}
void z3()
{
/*x[5]=a[6];
x[6]=a[8];
x[7]=a[5];
x[8]=a[7];*/
x[]=a[];
x[]=a[];
x[]=a[];
x[]=a[];
x[]=a[];
x[]=a[];
x[]=a[];
x[]=a[];
}
int ok1()
{
for (int i=;i<=;i++) a[i]=b[i];
for (int i=;i<=;i++) x[i]=a[i];
z1();
if (ok()) return ;
for (int i=;i<=;i++) a[i]=x[i];
z1();
for (int i=;i<=;i++) a[i]=x[i];
z1();
if (ok()) return ;
return ;
}
int ok2()
{
for (int i=;i<=;i++) a[i]=b[i];
for (int i=;i<=;i++) x[i]=a[i];
z2();
if (ok()) return ;
for (int i=;i<=;i++) a[i]=x[i];
z2();
for (int i=;i<=;i++) a[i]=x[i];
z2();
if (ok()) return ;
return ;
}
int ok3()
{
for (int i=;i<=;i++) a[i]=b[i];
for (int i=;i<=;i++) x[i]=a[i];
z3();
if (ok()) return ;
for (int i=;i<=;i++) a[i]=x[i];
z3();
for (int i=;i<=;i++) a[i]=x[i];
z3();
if (ok()) return ;
return ;
}
int main()
{
scanf("%d",&T);
while (T--)
{
f=;
for (int i=;i<=;i++) scanf("%d",&b[i]);
if (okk()) f=;
if (f==) if (ok1()) f=;
if (f==) if (ok2()) f=;
if (f==) if (ok3()) f=;
if (f==) puts("YES");else puts("NO");
}
return ;
}

Hdu-5983 2016ACM/ICPC亚洲区青岛站 B.Pocket Cube 模拟的更多相关文章

  1. Hdu-5992 2016ACM/ICPC亚洲区青岛站 K.Finding Hotels KDtree

    题面 题意:二维平面上有很多点,每个点有个权值,现在给你一个点(很多组),权值v,让你找到权值小于等于v的点中离这个点最近的,相同的输出id小的 题解:很裸的KDtree,但是查询的时候有2个小限制, ...

  2. HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)

    Recursive sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  3. HDU 5952 Counting Cliques 【DFS+剪枝】 (2016ACM/ICPC亚洲区沈阳站)

    Counting Cliques Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  4. HDU 5948 Thickest Burger 【模拟】 (2016ACM/ICPC亚洲区沈阳站)

    Thickest Burger Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  5. HDU 5949 Relative atomic mass 【模拟】 (2016ACM/ICPC亚洲区沈阳站)

    Relative atomic mass Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  6. HDU 5976 Detachment 【贪心】 (2016ACM/ICPC亚洲区大连站)

    Detachment Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  7. HDU 5979 Convex【计算几何】 (2016ACM/ICPC亚洲区大连站)

    Convex Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  8. 2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)

    摘要 本文主要列举并求解了2016 ACM/ICPC亚洲区青岛站现场赛的部分真题,着重介绍了各个题目的解题思路,结合详细的AC代码,意在熟悉青岛赛区的出题策略,以备战2018青岛站现场赛. HDU 5 ...

  9. 2016ACM/ICPC亚洲区大连站现场赛题解报告(转)

    http://blog.csdn.net/queuelovestack/article/details/53055418 下午重现了一下大连赛区的比赛,感觉有点神奇,重现时居然改了现场赛的数据范围,原 ...

随机推荐

  1. C#使用各种时间戳及转换

    /// <summary> /// DateTime时间格式转换为13位带毫秒的Unix时间戳 /// </summary> /// <param name=" ...

  2. Oracle数据库基础知识总结(一)

    数据库名.实例名.数据库域名.全局数据库名.服务名,这是几个令很多初学者容易混淆的概念.相信很多初学者都与我一样被标题上这些个概念搞得一头雾水. 我们现在就来把它们弄个明白. 一.数据库名 什么是数据 ...

  3. c#日期计算

    /// <summary> /// 计算日期的间隔(静态类) /// </summary> public static class dateTimeDiff { /// < ...

  4. swift里 as、as!、as?区别 T.Type与动态类型

    as 1.编译器进行类型转换合法性检查:静态 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: shoppingLi ...

  5. Linux 重要文件目录

    文件系统层次化标准(Filesystem Hierarchy Standard)[FHS] 树形结构 /boot 开机所需文件——内核开机菜单以及所需的配置文件等 /dev 以文件形式存放任何设备与接 ...

  6. 微信小程序中的iPhone X适配问题

    微信小程序中的iPhone X适配问题 小程序中下方的导航会被iPhone X下面的那条黑线盖住[微笑脸],所以要专门为了iPhone X做样式上的适配[微笑脸] wx.getSystemInfo({ ...

  7. java操作Excel的poi的导出Excel表格

    页面布局 点击导出用户:触发函数,直接访问后台 后台方法如下: public String export()throws Exception{ Connection con=null; try { c ...

  8. 通过yum仓库安装mysql

    1,下载安装包wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm2,安装mysql源yum -y ins ...

  9. 两个控件同一行显示bootstrap

    <div class="form-group"> <label for="Name" class="form-inline" ...

  10. [luogu4251 SCOI2015] 小凸玩矩阵 (二分图最大匹配)

    传送门 Description Input Output 输出包含一行,为选出的 n 个数中第 k 大数的最小值. Sample Input 输入样例1: 2 3 1 1 2 4 2 4 1 输入样例 ...