ZOJ Problem Set - 2004 Commedia dell'arte
- 求解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相关推荐
- uva 716 - Commedia dell' arte(置换)
题目链接:uva 716 - Commedia dell' arte 题目大意:给定一个三维的八数码,0表示空的位置,问说是否可以排回有序序列. 解题思路:对于n为奇数的情况,考虑三维八数码对应以为状 ...
- UVA 716 - Commedia dell' arte(三维N数码问题)
UVA 716 - Commedia dell' arte 题目链接 题意:给定一个三维的n数码游戏,要求变换为按顺序,并且最后一个位置是空格,问能否变换成功 思路:和二维的判定方法一样,因为z轴移动 ...
- POJ 1507 Commedia dell' arte 未完成
- UVALive - 5542 Commedia dell' arte 三维n数码问题
其实,,,不管二维三维的这类问题,本质都是一个置换群的对换问题 一置换中的一个长度为k的循环,至少需要k-1次对换才能恢复 对换有个性质就是,一个对换不管变奇偶性都是相同的 我们来看这道题,,其实移动 ...
- Argus(ZOJ Problem Set - 2212)(优先队列)
Argus 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte 总提交: 3 测试通过: 2 描述 A data stream ...
- ZOJ Problem 1005 jugs
题目 In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were confronted with the ...
- ZOJ Problem Set - 1331 Perfect Cubes
这个题啊,一看就是暴力,暴力,暴力!!! 但是,暴力也是要做到暴力的恰到好处:看题 For hundreds of years Fermat's Last Theorem, which stated ...
- ZOJ Problem Set - 1048 Financial Management
我承认这是一道水的不能再水的题,今天一下就做到了,还是无耻的帖上来吧 #include <stdio.h>int main() {double sum=0;for(int i=1;i< ...
- ZOJ Problem Set - 3329 One Person Game
题目大意:有三个骰子,分别有k1,k2,k3个面. 每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和. 当分数大于n时结束.求游戏的期望步数.初始分数为0分析 设 E[i] ...
最新文章
- composer PHP Fatal error: Allowed memory size of 报错解决
- 移动广告平台到底哪个好?哪个能赚的米米多?
- SQL Server数据库设置自动备份策略
- [There will be more story......]
- 18款 非常实用 jquery幻灯片图片切换
- mysql中编写匿名块_Oracle数据库之Oracle_PL/SQL(1) 匿名块
- python 压力测试小 demo
- 题库明细 使用java理解程序逻辑
- 图解VMWare10创建虚拟机
- ORACLE——ROWNUM解析(使用ROWNUM大于条件,无法得到任何查询结果)
- linux中_Linux基础知识(Linux系统、Linux中的链表)
- [收藏]Visual Component Framework
- 第四季-专题2-U-Boot新手入门
- 更改boot.ini自动进入DSRM模式
- android启动接受不到boot_complete广播,android-BOOT_COMPLETED从未收到
- 关于错误local variable ‘str‘ referenced before assignment
- Linux | Shell 学习笔记(二)Shell 流程控制 if、case、for、while| read读取输入 | 函数的使用 | cut、sed、awk、sort命令 +Demo
- 键盘右上角三个灯的作用
- linux中错误编号对应意思
- Cocos2dx 小技巧(一)预定义文件路径