宽搜的实现主要使用了队列,从起点出发,遇到合法的点,就放入队列尾。每次取队列头进行处理,探索到新元素就放在队尾。如果队列中元素全部处理完也没有发现目标,则不存在这样的路径。遇到目标点之后,搜索结束。 深搜比较适合解决路径的存在性问题,只要发现一个路径存在,搜索结束。深搜在实现上,一般使用递归和回溯。 ...
分类:
其他好文 时间:
2017-10-22 21:30:39
阅读次数:
155
宽搜的定义在上次宽搜一中已讲,现在直接看跟本题有关的”康托展开“。 什么是”康托展开“?其实就是宽搜中实现其主要思想的一个工具——已经考察过的状态就不再考察。 解释:X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! ,其中a[i]为当前未 ...
分类:
其他好文 时间:
2017-10-22 17:32:19
阅读次数:
353
先声明,是康托,不是康娜,hhh 在我们做题中,搜索也好,动态规划也好,我们往往有时候需要用一个数字表示一种状态 比如有8个灯泡排成一排,如果你用0和1表示灯泡的发光情况 那么一排灯泡就可以转换为一个二进制数字了 比如 01100110 = 102 11110000 = 240 10101010 = ...
分类:
其他好文 时间:
2017-10-07 18:46:48
阅读次数:
249
表示这个东西背了很多次,但是次次忘,希望这次能够记住吧。 康托展开:问45231是n=5的全排列中第几个排列?ans:= 3*4! + 3*3! + 1*2! + 1*1! + 0*0! =93这时求出的是在45231前面全部的排列,排名还要加1所以对此的做法,就是将阶乘前面的求出来,这个就是在a[ ...
分类:
其他好文 时间:
2017-09-29 21:13:54
阅读次数:
197
NOIP算法总结与复习 (看了看李总的蓝皮书,收获颇多,记下此文,以明志~~) (一)数论 1、最大公约数,最小公倍数 2、筛法球素数 3、mod规律公式 4、排列组合数,错排 5、Catalan数 6、康托展开 7、负进制 8、中位数的应用 9、位运算 (二)高精度算法 1、朴素加法减法 2、亿进 ...
分类:
编程语言 时间:
2017-09-17 13:52:57
阅读次数:
231
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 题目大意:传统八数码问题 解题思路:就是从“12345678x”这个终点状态开始反向BFS,将各个状态记录下来,因为数字太大所以用康托展开将数字离散化。 代码: ...
分类:
其他好文 时间:
2017-09-16 01:14:35
阅读次数:
209
题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字。棋盘中留有一个空格,空格用0来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了使题目简单,设目标状态为123804765),找到一种最少步骤的移动方法,实现从初始布局到目标布局的 ...
分类:
其他好文 时间:
2017-09-06 22:04:58
阅读次数:
174
The isolated people of MacGuffin Island have a unique culture, and one of the most interesting things about them is their language. Their alphabet con ...
分类:
其他好文 时间:
2017-08-19 11:05:30
阅读次数:
121
Permutation 日照夏令营D2T2,赛场上40分,因为当时用的阶乘把康托展开算出来了,由于n很大,后6个点爆了。其实不用算,比如a是第x个排列,b是第y个排列,而想x、y能拆成rank数组,x+y实际上就是它们对应位上rank数组的值相加,因为最后要求的是排列,所以根本用不到阶乘。这里用的是 ...
分类:
其他好文 时间:
2017-08-12 10:34:51
阅读次数:
139
在算法竞赛之中,有时候一些题目的意思很容易就可以看出来解决步骤,但是数据却不是平常的数据量,而是高精度数据,这时候要是因为高精度的问题而使得这道题失去了AC的机会岂不是会被队友喷死,所以今天就教教大学关于高精度的一些算法吧。 个人对于高精度的算法,感觉就是很原始的小时候学习加减乘除时候的做法。怎么说 ...
分类:
编程语言 时间:
2017-07-17 14:08:31
阅读次数:
177