题面

题意:给你一个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. Android RecyclerView初体验

    很早之前就听说过RecyclerView这个组件了,但一直很忙没时间学习.趁着周末,就花了一天时间来学习RecyclerView. 准备工作 在Android Studio里新建一个Android项目 ...

  2. 手动触发dom节点事件代码

    在爬代码过程中,碰到一个稀奇古怪的问题.需要手工修改select的值,然后手动触发select的change事件,但使用网络上查到的通过trigger.onchange()事件触发都不执行,没办法,只 ...

  3. SQL Server中,with as使用介绍

    一.WITH AS的含义      WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到.有的时候 ...

  4. QT-Creator+SDK+编译器+自定义配置

    QT4.8的软件曾经耗费巨大的功夫进行构建,不舍得扔掉!重新安装Qt4.8版本 1.安装qt-creator 安装qt-creator-win-opensource-2.4.0.exe版本,不建议使用 ...

  5. js截取字符串测试

    function gget() { $.ajax({ type: "GET", url: "index", data: { U: '1234', P: '000 ...

  6. Day7 字符串和常用数据结构

    字符串和常用数据结构 使用字符串 第二次世界大战促使了现代电子计算机的诞生,当初的想法很简单,就是用计算机来计算导弹的弹道,因此在计算机刚刚诞生的那个年代,计算机处理的信息主要是数值,而世界上的第一台 ...

  7. eas之设定table选择模式

    tblMain.getSelectManager().setSelectMode(0);--不能选择  tblMain.getSelectManager().setSelectMode(1);--选择 ...

  8. 洛谷P1307 数字反转【水题】

    给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入输出格式 输入格式: 一个整数 NN ...

  9. Noip 2015 练习

    子串 传送门 Solution \(f[i][j][k]\)表示A到i,B到j第k个子串的答案 \(g[i][j][k]\)表示A到i,B到j第k个子串且A[i]一定使用 \(g[i][j][k]=( ...

  10. mysql deadlock、Lock wait timeout解决和分析

    项目上线 线上遇到大量的deadlock 和wait timeout 但是看程序没什么问题 问dba也不能给出很好的解决方案!最终自己去了解mysql锁 以及看mysq锁日志 如果了解mysql锁的机 ...