其实,,,不管二维三维的这类问题,本质都是一个置换群的对换问题

一置换中的一个长度为k的循环,至少需要k-1次对换才能恢复

对换有个性质就是,一个对换不管变奇偶性都是相同的

我们来看这道题,,其实移动一次0的,,就相当于一个对换,,

我们先将这个三维n数码化为置换,找出有w个循环,那么就说明至少需要对换n*n*n-w次,

再看0到最终位置最小步数x

如果x和n*n*n-x同奇偶性,就说明2个置换能通过对换互相转换,,,恩

#include<iostream>
#include<cstdio>
#include<math.h>
#include<algorithm>
#include<map>
#include<set>
#include<bitset>
#include<stack>
#include<queue>
#include<string.h>
#include<string>
#include<cstring>
#include<vector>
#include<time.h>
#include<stdlib.h>
using namespace std;
#define INF 0x3f3f3f3f
#define INFLL 0x3f3f3f3f3f3f3f3f
#define FIN freopen("input.txt","r",stdin)
#define mem(x,y) memset(x,y,sizeof(x))
typedef unsigned long long ULL;
typedef long long LL;
#define fuck(x) cout<<x<<endl;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
typedef pair<pair<int,int>,int> PIII;
typedef pair<int,int> PII;
const double eps=1e-5;
const int MX=1e6+5;
const int P=9973;
int n,w[MX];
bool vis[MX];
namespace IO
{
const int MX = 4e7;
char buf[MX];
int c, sz;
void begin()
{c = 0;sz = fread(buf, 1, MX, stdin);
}
inline bool read(int &t)
{while(c < sz && buf[c] != '-' && (buf[c] < '0' || buf[c] > '9')) c++;if(c >= sz) return false;bool flag = 0;if(buf[c] == '-') flag = 1, c++;for(t = 0; c < sz && '0' <= buf[c] && buf[c] <= '9'; c++) t = t * 10 + buf[c] - '0';if(flag) t = -t;return true;
}
}
int main()
{IO::begin();int T;IO::read(T);while(T--){IO::read(n);int pp=0;for(int z=0; z<n; z++)for(int y=0; y<n; y++)for(int x=0; x<n; x++){int t;IO::read(t);//cout<<t<<endl;if(t==0){pp=abs(n-1-x)+abs(n-1-y)+abs(n-1-z);}if(x==n-1&&y==n-1&&z==n-1)w[0]=t;else w[x+1+y*n+z*n*n]=t;}// cout<<pp<<endl;int up=n*n*n,cnt=0;for(int i=0; i<up; i++)vis[i]=0;//for(int i=0; i<up; i++)cout<<w[i]<<" ";cout<<endl;for(int i=0; i<up; i++)if(vis[i]==0){cnt++;int now=w[i];vis[i]=1;while(now!=i){vis[now]=1;now=w[now];}}//cout<<cnt<<endl;if((pp+n-cnt)&1)puts("Puzzle is unsolvable.");else puts("Puzzle can be solved.");}return 0;
}

UVALive - 5542 Commedia dell' arte 三维n数码问题相关推荐

  1. UVA 716 - Commedia dell' arte(三维N数码问题)

    UVA 716 - Commedia dell' arte 题目链接 题意:给定一个三维的n数码游戏,要求变换为按顺序,并且最后一个位置是空格,问能否变换成功 思路:和二维的判定方法一样,因为z轴移动 ...

  2. uva 716 - Commedia dell' arte(置换)

    题目链接:uva 716 - Commedia dell' arte 题目大意:给定一个三维的八数码,0表示空的位置,问说是否可以排回有序序列. 解题思路:对于n为奇数的情况,考虑三维八数码对应以为状 ...

  3. UVA 716(Commedia dell' arte-三维八数码)

    题意:给一个3维八数码(长宽高为 n≤100 n \le100),问能否恢复原状? 考虑2维八数码 给一个网上的结论 八数码问题的有解无解的结论: 一个状态表示成一维的形式,求除0之外所有数字的逆序数 ...

  4. ZOJ Problem Set - 2004 Commedia dell'arte

    求解N*N*N多维棋盘问题,解题思路参考:再论八数码 求解逆序数参考:逆序数的几种求法 下面是C++源代码 #include<iostream> #include<string.h& ...

  5. POJ 1507 Commedia dell' arte 未完成

  6. 八数码问题可解性及扩展

    对于给定八数码棋局的初始状态,我们的目标是通过交换空格与其相邻棋子使棋盘达到目标状态. 其中,游戏规则是只能交换空格与其上下左右四个方向的相邻棋子. 假设棋局目标状态为如下形式:(A.B.C.D.E. ...

  7. 八数码问题-8puzzle

    完整代码及测试数据 完整代码及测试数据 问题简介 八数码:是指在3x3的矩阵中,其中有8个格子放置成1-8,剩下一个格子是空格.能够移动和空格相邻的格子到空格,直到这个矩阵满足每一行依次从左到右读取是 ...

  8. POJ的题目分类(两个版本)

    版本一: 简单题 1000A+B Problem 1001Exponentiation 1003 Hangover 1004 Financial Management 1005 I Think I N ...

  9. POJ前面的题目算法思路【转】

    1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...

最新文章

  1. 如何使用htmlq提取html文件内容
  2. 打开 XP Pro SP2 远程桌面的多用户支持
  3. SharePoint 2013安装图文教程
  4. Hadoop学习--Hive安装与配置
  5. 洛谷P1169 树上分组背包
  6. DM3730 LCD控制器驱动框架
  7. textbox的textmode取为multiline多行时,其maxlength不起作用
  8. 2017.05.01
  9. git 推送出现 fatal: The remote end hung up unexpectedly 解决方案
  10. php var_dump和var_export区别
  11. 计算机二级c语言考试的步骤,计算机二级C语言考试技巧
  12. 下载 Google Chrome 离线安装包
  13. PDF、图片、合并、转化工具
  14. 【大一期末项目】qqclienkey利用:基于qqclientkey的纯c++项目实践
  15. 护照扫描仪的应用环境解读 SDK数据
  16. 多媒体播放器软件性能测试,视频播放性能测试及总结
  17. Springboot + Mybatis整合的小demo,火车订票系统
  18. 【图文详解】SpringBoot项目启动报错:The bean ‘xxxServiceImpl‘ could not be injected as a ‘xxxServiceImpl‘ ...
  19. 混音师的混音之道|公开我学习混音的方法,真正的捷径|MZD Studios
  20. 树莓派4b: 初级使用(Ubuntu21.10,Windows11写入SSD,远程连接,软路由搭建,webmin安装,自建Dockerhub,远程管理, 百度云盘,阿里云盘同步等)

热门文章

  1. Jetson Nano NX TX2 Xavier 设置Nvme启动保姆级教程(附shell脚本)
  2. IDEA启动Tomcat失败
  3. 分治算法实例:赛程安排(VB.net代码)
  4. Agile PLM文件服务器报错解决
  5. java web 项目—活动管理系统说明(附源码)
  6. 再推新品双屏翻译机,科大讯飞能否站稳C端江湖?
  7. C#获取本机连接的打印机属性
  8. 怀同行之心,筑信任之基,践数智之行
  9. vue项目视频实现键盘快进快退,音量调大小及监听播放事件
  10. 特斯拉面试,工控经典PLC题目:一键启动功能实现解法分析,少个坑,给自己多个机会