• 求解N*N*N多维棋盘问题,解题思路参考:再论八数码
  • 求解逆序数参考:逆序数的几种求法
  • 下面是C++源代码
#include<iostream>
#include<string.h>
using namespace std;#define N 1000005
int a[N];
int b[N];
int count;
long long inv;
//
void merge(int first, int mid, int last)
{int i, j, k;memcpy(b + first, a + first, (last - first + 1)*sizeof(int));k = i = first, j = mid + 1;while (i <= mid || j <= last){if (j > last || (i <= mid&&b[j] >= b[i])){a[k++] = b[i++];inv += (j - (mid + 1)) & 1;}else{a[k++] = b[j++];//inv += ((mid + 1) - i) & 1;}}
}void msort(int first,int last)
{if (first>=last)return;int mid = (first + last) / 2;msort(first, mid);msort(mid + 1, last);merge(first, mid, last);
}int main()
{int n,m,size,y,z,dis,s,v,i,j,iter;cin >> n;for (i = 0; i < n; i++){cin >> m;size = m * m * m;s = m * m;for (iter = j = 0; j < size; j++){cin >> v;v ? a[iter++] = v : (z = j / s, y = j % s / m);}inv = 0;msort(0,iter-1);if (m % 2 == 0){inv += (s - 1) * (m - 1 - z) + (m - 1) * (m - 1 - y);}/*if (m % 2 == 1){ans = inv % 2;}else{dis = (size - 1) / m - z / m;ans = (dis + inv) % 2;}*/if (!(inv&1))    cout << "Puzzle can be solved." << endl;else{cout << "Puzzle is unsolvable." << endl;}}//system("pause");
}

ZOJ Problem Set - 2004 Commedia dell'arte相关推荐

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

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

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

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

  3. POJ 1507 Commedia dell' arte 未完成

  4. UVALive - 5542 Commedia dell' arte 三维n数码问题

    其实,,,不管二维三维的这类问题,本质都是一个置换群的对换问题 一置换中的一个长度为k的循环,至少需要k-1次对换才能恢复 对换有个性质就是,一个对换不管变奇偶性都是相同的 我们来看这道题,,其实移动 ...

  5. Argus(ZOJ Problem Set - 2212)(优先队列)

    Argus   时间限制(普通/Java):1000MS/3000MS     运行内存限制:65536KByte 总提交: 3            测试通过: 2 描述 A data stream ...

  6. ZOJ Problem 1005 jugs

    题目 In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were confronted with the ...

  7. ZOJ Problem Set - 1331 Perfect Cubes

    这个题啊,一看就是暴力,暴力,暴力!!! 但是,暴力也是要做到暴力的恰到好处:看题 For hundreds of years Fermat's Last Theorem, which stated ...

  8. ZOJ Problem Set - 1048 Financial Management

    我承认这是一道水的不能再水的题,今天一下就做到了,还是无耻的帖上来吧 #include <stdio.h>int main() {double sum=0;for(int i=1;i< ...

  9. ZOJ Problem Set - 3329 One Person Game

    题目大意:有三个骰子,分别有k1,k2,k3个面. 每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和. 当分数大于n时结束.求游戏的期望步数.初始分数为0分析 设 E[i] ...

最新文章

  1. composer PHP Fatal error: Allowed memory size of 报错解决
  2. 移动广告平台到底哪个好?哪个能赚的米米多?
  3. SQL Server数据库设置自动备份策略
  4. [There will be more story......]
  5. 18款 非常实用 jquery幻灯片图片切换
  6. mysql中编写匿名块_Oracle数据库之Oracle_PL/SQL(1) 匿名块
  7. python 压力测试小 demo
  8. 题库明细 使用java理解程序逻辑
  9. 图解VMWare10创建虚拟机
  10. ORACLE——ROWNUM解析(使用ROWNUM大于条件,无法得到任何查询结果)
  11. linux中_Linux基础知识(Linux系统、Linux中的链表)
  12. [收藏]Visual Component Framework
  13. 第四季-专题2-U-Boot新手入门
  14. 更改boot.ini自动进入DSRM模式
  15. android启动接受不到boot_complete广播,android-BOOT_COMPLETED从未收到
  16. 关于错误local variable ‘str‘ referenced before assignment
  17. Linux | Shell 学习笔记(二)Shell 流程控制 if、case、for、while| read读取输入 | 函数的使用 | cut、sed、awk、sort命令 +Demo
  18. 键盘右上角三个灯的作用
  19. linux中错误编号对应意思
  20. Cocos2dx 小技巧(一)预定义文件路径

热门文章

  1. Tomcat无法启动:报出Server Tomcat v8.5 Server at localhost failed to start
  2. ESP8266 NONOSDK 编译问题
  3. SpringBoot Starters
  4. Dropzone和vue2+Dropzone
  5. 中国电信智能网-呈现出广阔的发展前景
  6. 《软技能:代码以外的生存指南》阅读总结
  7. 哪里有挣快钱的低成本项目的好路子?
  8. VisualFreeBasic介绍(VB6的进阶编程语言)
  9. 华南农业大学数据结构实验 8576
  10. 程序员,事业单位还是计算机老师?