简介:一个九宫格中有八个数字,一位空格,每次只能移动相邻的两个格子,现要求把九宫格变为“12345678x”的样子(x代表空格) Sample Input 2 3 4 1 5 x 7 6 8 Sample Output ullddrurdllurdruldr 这里我们要用到康拓展开,具体介绍如下: ...
分类:
其他好文 时间:
2020-09-15 21:01:35
阅读次数:
31
数论 康拓展开 前言 额,好像鸽了太久了。为了找回手感,不管是什么先写一点 简介 康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。 ——摘自百度百科 虽然解释得比较规范,但也比较容易理解 康拓展开就是对全 ...
分类:
其他好文 时间:
2020-06-29 22:39:24
阅读次数:
78
Algorithm 基本数据结构: "Trie(字典树)" "贪心" "高精度" "位运算" "C++STL" 数据结构进阶: "线段树" 数论: "康拓展开 & 逆康拓展开" 图论: "图论 二分图" "图论 最短路" "图论 最小生成树" "图论 Tarjan" "图论 树的直径" Contes ...
分类:
其他好文 时间:
2020-02-17 17:46:07
阅读次数:
50
康拓展开与逆康拓展开 一.简介 首先解释一下,所谓的康拓展开,就是能够通过一个式子,得到一个排列在所有排列中的按字典序排好后的位次。而逆康托展开,则是给出排列的位次,能够计算出排列是什么。 下面先给出康拓展开的公式 其中ai为整数,并且 0≤ai<i ,1≤ i ≤ n。 ai表示原数的第i位在当前 ...
分类:
其他好文 时间:
2020-01-29 18:13:56
阅读次数:
62
"题目" 这道题目,用康托展开,时间和空间都碾压了100%的c++. 康拓展开其实就是表示一个连续序列,其实也不用连续,给定一个序列,可以很快速的按照字典序,列出所有序列。给出特定序列,快速告诉你它是按照字典序排序是第几个,给出排名,快速输出序列 https://www.cnblogs.com/da ...
分类:
其他好文 时间:
2019-09-10 00:23:40
阅读次数:
87
在 5个数的排列组合中,计算 34152的康托展开值。 首位是3,则小于3的数有两个,为1和2, ,则首位小于3的所有排列组合为 第二位是4,由于第一位小于4,1、2、3中一定会有1个充当第一位,所以排在4之下的只剩2个,所以其实计算的是在第二位之后小于4的个数。因此 。 第三位是1,则在其之后小于 ...
分类:
其他好文 时间:
2019-08-17 17:43:03
阅读次数:
80
"康拓展开和逆康拓展开" "康拓展开模板题" 复杂度O($n^2$)的会tle(看数据就知道了)(虽然某题解说可以,不知道是不是后期加强了数据 然而我还是写了O($n^2$)的 include typedef long long LL; LL f[1000010]; const LL mod = 9 ...
分类:
其他好文 时间:
2019-08-09 23:59:21
阅读次数:
241
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 思路: 由于自己对康拓展开用的太少,看到这个题没想到康拓展开,最开始打算直接转换为数字,但太占内存了,又想到可以将状态存进set,后来查了一下发现原来是考察康拓展开。另外就是需要打表预处理,这样快 ...
分类:
其他好文 时间:
2019-02-09 15:15:49
阅读次数:
212
【题目描述】: "魔板 Magic Squares" 【思路】: 是不是感觉和八数码有点像? 显而易见的宽搜,把魔板的状态表示为排列,则状态最多有$8! = 40320$种,空间是可以接受的,对于是第几个排列可以用康拓展开来实现(我想在做八数码的时候你们都深知这个套路),然后根据题目中的三种方式转移 ...
分类:
其他好文 时间:
2018-10-04 23:58:01
阅读次数:
353
我真的服了, bfs+康拓展开,当然,这是比较低级的做法,今后我再更新其他的做法 八位数问题好像还是挺有名的 题目就是给你一个3*3的矩阵里面填装这 1-8的数字 空了一个格子,我们的目的就是让这个矩阵排列成 1 2 3 4 5 6 7 8 x x是空出来的 方法一:把 x看成9,从1 2 3 4 ...
分类:
其他好文 时间:
2018-10-04 18:59:02
阅读次数:
196