Hdu-5983 2016ACM/ICPC亚洲区青岛站 B.Pocket Cube 模拟
题意:给你一个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 模拟的更多相关文章
- Hdu-5992 2016ACM/ICPC亚洲区青岛站 K.Finding Hotels KDtree
题面 题意:二维平面上有很多点,每个点有个权值,现在给你一个点(很多组),权值v,让你找到权值小于等于v的点中离这个点最近的,相同的输出id小的 题解:很裸的KDtree,但是查询的时候有2个小限制, ...
- HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)
Recursive sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- HDU 5952 Counting Cliques 【DFS+剪枝】 (2016ACM/ICPC亚洲区沈阳站)
Counting Cliques Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- HDU 5948 Thickest Burger 【模拟】 (2016ACM/ICPC亚洲区沈阳站)
Thickest Burger Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- HDU 5949 Relative atomic mass 【模拟】 (2016ACM/ICPC亚洲区沈阳站)
Relative atomic mass Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
- HDU 5976 Detachment 【贪心】 (2016ACM/ICPC亚洲区大连站)
Detachment Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- HDU 5979 Convex【计算几何】 (2016ACM/ICPC亚洲区大连站)
Convex Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- 2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)
摘要 本文主要列举并求解了2016 ACM/ICPC亚洲区青岛站现场赛的部分真题,着重介绍了各个题目的解题思路,结合详细的AC代码,意在熟悉青岛赛区的出题策略,以备战2018青岛站现场赛. HDU 5 ...
- 2016ACM/ICPC亚洲区大连站现场赛题解报告(转)
http://blog.csdn.net/queuelovestack/article/details/53055418 下午重现了一下大连赛区的比赛,感觉有点神奇,重现时居然改了现场赛的数据范围,原 ...
随机推荐
- Leetcode0092 & 0206--Reverse Linked List 链表逆转
[转载请注明]http://www.cnblogs.com/igoslly/p/8670038.html 链表逆序在链表题目中还是较为常见的,这里将Leetcode中的两道题放在一起,分别是 0092 ...
- (转)基于Metronic的Bootstrap开发框架经验总结(6)--对话框及提示框的处理和优化
http://www.cnblogs.com/wuhuacong/p/4775282.html 在各种Web开发过程中,对话框和提示框的处理是很常见的一种界面处理技术,用得好,可以给用户很好的页面体验 ...
- django分页功能,templatetags的应用
django 将不会将得到的html代码自动转化 from django.utils.html import format_html html =''' <a href='http://www. ...
- monkey测试环境搭建 及 操作步骤
1.环境搭建 a.下载安卓SDK 链接:https://pan.baidu.com/s/1-OB6UVPvl5-N-vFdykfMmA 提取码:3spx b.配置环境变量(配置完成,重启系统,配置生效 ...
- javeee 字节Buffered
package Zy; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io. ...
- Linux下文件查找命令find笔记
在Linux命令下如果需要快速自己系统所需要处理的文件,可以通过find命令快速进行检索. 如果想在某个路径下查找相应的文件可以执行如下命令: find path -name filename # p ...
- mysql与oracle 表字段定义比较
链接: https://blog.csdn.net/yzsind/article/details/7948226
- Idea中修改servlet模板
1.点击左上角的File: Setting --> Editor --> File and Code Templates --> Other --> web -->Ser ...
- eas之指定虚模式
KDTable支持三种取数模式:实模式.虚模式分页.虚模式分组,默认为实模式.// 实模式table.getDataRequestManager().setDataRequestMode(KDTDat ...
- 移动端rem.js使用方法
下面的代码一是我根据rem的使用经验,自己写的一个rem.js,发现很好用,能适用所有移动端h5页面的自适应需求: 代码一: ``` window.onload = function(){ /*720 ...