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 下午重现了一下大连赛区的比赛,感觉有点神奇,重现时居然改了现场赛的数据范围,原 ...
随机推荐
- Android RecyclerView初体验
很早之前就听说过RecyclerView这个组件了,但一直很忙没时间学习.趁着周末,就花了一天时间来学习RecyclerView. 准备工作 在Android Studio里新建一个Android项目 ...
- 手动触发dom节点事件代码
在爬代码过程中,碰到一个稀奇古怪的问题.需要手工修改select的值,然后手动触发select的change事件,但使用网络上查到的通过trigger.onchange()事件触发都不执行,没办法,只 ...
- SQL Server中,with as使用介绍
一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到.有的时候 ...
- QT-Creator+SDK+编译器+自定义配置
QT4.8的软件曾经耗费巨大的功夫进行构建,不舍得扔掉!重新安装Qt4.8版本 1.安装qt-creator 安装qt-creator-win-opensource-2.4.0.exe版本,不建议使用 ...
- js截取字符串测试
function gget() { $.ajax({ type: "GET", url: "index", data: { U: '1234', P: '000 ...
- Day7 字符串和常用数据结构
字符串和常用数据结构 使用字符串 第二次世界大战促使了现代电子计算机的诞生,当初的想法很简单,就是用计算机来计算导弹的弹道,因此在计算机刚刚诞生的那个年代,计算机处理的信息主要是数值,而世界上的第一台 ...
- eas之设定table选择模式
tblMain.getSelectManager().setSelectMode(0);--不能选择 tblMain.getSelectManager().setSelectMode(1);--选择 ...
- 洛谷P1307 数字反转【水题】
给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入输出格式 输入格式: 一个整数 NN ...
- 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]=( ...
- mysql deadlock、Lock wait timeout解决和分析
项目上线 线上遇到大量的deadlock 和wait timeout 但是看程序没什么问题 问dba也不能给出很好的解决方案!最终自己去了解mysql锁 以及看mysq锁日志 如果了解mysql锁的机 ...