![](https://img-blog.csdnimg.cn/direct/4a6217adb6b04b7f868976daa744d58d.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
排序搜索
文章平均质量分 58
本专栏涵盖排序搜索相关的内容,包括各种排序算法、搜索算法、递归分治等
阿阿阿安
梦想在路上
展开
-
记忆化搜索
记忆化搜索是在搜索的基础上,利用数组来记录已经计算出来的重叠子问题状态,进行合理化的剪枝,从而降低时间复杂度。这个记录状态的过程就是记忆化的过程,我们需要找到不同搜索层次之间的子问题、状态转移关系,这与动态规划的思想又不谋而合。原创 2023-02-23 20:46:29 · 646 阅读 · 1 评论 -
结构体排序
sort与优先队列对于结构体的排序是不同的。原创 2019-03-20 09:34:38 · 523 阅读 · 0 评论 -
【刷题记录】 HDU6223 Infinite Fraction Path BFS+剪枝
给你一串长为n的数字,让你从某个位置出发,位置i只能到达(i*i+1)%n , 一直往下走n次,问哪里出发时候,组成的n位结果最大。原创 2019-03-11 17:13:08 · 188 阅读 · 1 评论 -
【刷题记录】 HDU1811 Rank of Tetris 拓扑排序+并查集
对N个人进行排名。为了方便起见,每个人都已经被编号,分别从0到N-1,并且编号越大,RP就越高。同时Lele从狗仔队里取得一些(M个)关于Rating的信息。这些信息可能有三种情况,分别是"A > B","A = B","A < B",分别表示A的Rating高于B,等于B,小于B。现在Lele并不是让你来帮他制作这个高手榜,他只是想知道,根据这些信息是否能够确定出这个高手榜,是的话就输出"OK"。否则就请你判断出错的原因,到底是因为信息不完全(输出"UNCERTAIN"),还是因为这些信息中包...原创 2019-03-09 11:27:23 · 177 阅读 · 0 评论 -
【刷题记录】 Channel Allocation 染色问题 BFS
给你一个无向图,可能不联通,问把每个点染色,且每个点与相邻点颜色都不相同时,使用最少的染色颜色的数目。原创 2019-03-04 17:10:27 · 158 阅读 · 1 评论 -
排序算法总结
常见的共九大排序算法,可分为内部排序(小文件排序)和外部排序(大文件排序)两大类,本文将重点介绍内部排序。原创 2018-11-24 20:08:39 · 354 阅读 · 1 评论 -
哈希表及哈希冲突
哈希法又称散列法,即通过哈希函数来快速定位元素位置,用于存取元素,由此建立起来的存储表称为哈希表。哈希函数对于不同的元素可能计算出的地址是一样的,这就产生了哈希冲突,所以我们要处理哈希冲突。原创 2018-11-24 18:40:08 · 1038 阅读 · 1 评论 -
【刷题记录】 Gym-101234A Hacker Cups and Balls 二分+线段树
给出一行n个数字,给出m个操作,每个操作指定一个区间 [ l , r ] ,若 l <=r则将区间内升序,否则降序。求m次操作以后,整个区间的中值是多少。原创 2018-11-18 20:29:53 · 355 阅读 · 0 评论 -
K-D Tree 维度空间搜索二叉树
K-D树全称为K -Dimension Tree ,其实质是一棵二叉树。大家可能知道二叉搜索树,二叉搜索树是在一维数据里面建立的搜索树,用于更快的查找。这里的K - D树可以看作是推广到多维空间里面时对于点查找的搜索树。但是你可能有疑问,为什么不用二叉搜索树来进行多维里面的查找?因为点是不能直接比较大小的,所以这里的二叉搜索树必须另外建立一种建树规则,就形成了一种特殊的二叉搜索树即K - D 树。原创 2018-11-07 21:43:43 · 1843 阅读 · 0 评论 -
【刷题记录】 Gym-101194 D Ice Cream Tower 二分+贪心
给你n个冰激凌球的体积,告诉你k个球能合成一个冰激凌,合成条件是放在第一个球下面的球体积要大于等于他的两倍。问你最多能合成多少个。原创 2018-10-08 11:14:53 · 190 阅读 · 0 评论 -
【刷题记录】 HDU-6231 K-th Number 二分+尺取法
给你n个数字的序列,让你把任意一个连续区间内第k大的数字插入到数组B里面,最后求B中第m大的数字。原创 2018-09-12 17:11:19 · 314 阅读 · 0 评论 -
【刷题记录】 UVALive-8290 Capsules DFS
给你一个n*m的地图,让你往里面空位置填数字,其中' - '表示空,有数字的表示已经填好了不能更改。然后把地图划分为k部分,每一部分有l个点,规定每一部分的点填的数字只能在1 ~ l 之间并且该位置四周八个方向均不能有相同的数字,问怎么分配,并画出地图。原创 2018-08-31 12:29:52 · 151 阅读 · 1 评论 -
【刷题记录】 Aizu-1379 Parallel Lines DFS
给你n个点(n一定是偶数),让你判断这n个点最多可以组成多少对平行线(n原创 2018-08-31 11:22:32 · 232 阅读 · 1 评论 -
【刷题记录】 Gym-101667H Rock Paper Scissors 分治
给你如下地图的长度和你走的步数,判断你的位置坐标在哪。原创 2018-08-31 10:19:46 · 295 阅读 · 0 评论 -
【刷题记录】 HDU - 5884 Sort 二分+k叉哈夫曼树
给你n个序列的长度和你现有的总资金,让你把这n个序列合并为一个,告诉你合并k个序列的花费是这k个序列的长度和,总花费不能超过你现有的总资金,问你最小的k是多少?(很显然一次性合并n个花费是最小的)原创 2018-08-25 10:16:23 · 177 阅读 · 0 评论 -
【刷题记录】 OpenJ_Bailian 3151 Pots
题意:给你两个容量为A和B的杯子,让你进行如下操作:FILL(i) fill the poti(1 ≤i≤ 2) from the tap;DROP(i) empty the potito the drain;POUR(i,j) pour from potito potj; after this operation either th...原创 2018-08-07 15:49:09 · 224 阅读 · 0 评论 -
【刷题记录】 HDU 2102 A计划
题意:可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验。魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老。年迈的国王正是心急如焚,告招天下勇士来拯救公主。不过公主早已习以为常,她深信智勇的骑士LJ肯定能将她救出。现据密探所报,公主被关在一个两层的迷宫里,迷宫的入口是S(0,0,0),公主的位置用P表示,时空传输机用#表示,墙用*表示,平地用.表示。骑士们一进入时空传输机就会被转到另一层的相对位置,但如果被转到的位置是墙的话,那...原创 2018-08-07 15:36:30 · 177 阅读 · 0 评论 -
【刷题记录】 HDU 1010 Tempter of the Bone
1.题意:给出n行m列的迷宫,其中S代表起点,D代表出口,X表示墙(无法通过),' . '表示空地,出口在t时刻会打开,问你能否在门打开的时候逃出去。原创 2018-08-07 15:02:24 · 136 阅读 · 1 评论 -
【刷题记录】 CodeForces 371C Hamburgers
题意:小明要做汉堡,汉堡由 'B' (bread), 'S' (sausage) ,'C' (cheese)组成,输入第一行给出汉堡的样式,第二行给出现有的B S C 的个数,第三行给出商店里B S C 的单价,第四行给出现有的钱数。问用这些最多能做出多少个输入样式的汉堡来。原创 2018-08-06 18:36:16 · 195 阅读 · 0 评论 -
二分查找算法
注意不要把二分只限于三种函数,手写二分更适用,二分查找是一种思想。原创 2018-08-06 17:10:23 · 200 阅读 · 0 评论 -
【刷题记录】 UVA11214 Guarding the Chessboard
题意:给出n*m的棋盘,上面被标记‘X’的地方需要放置皇后来保护,问最少需要几个皇后能保护所有的‘X’型区域。注意:(1)皇后可以放置在任何'.'或者‘X’上 (2)皇后保护自己所在的这一列,这一行,左右斜对角线方向上的所有格子。原创 2018-07-04 16:40:57 · 450 阅读 · 2 评论 -
【刷题记录】 UVA12558 Egyptian Fractions
题意:在古埃及,人们使用单位分数的和(形如 1/a ,a 是自然数)表示一切有理数。 如:2/3=1/2+1/6,但不允许 2/3=1/3+1/3,因为加数中有相同的。 对于一个分数 a/b,表示方法有很多种,但是哪种最好呢?首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越好。 同时这里给出k个不能做分母的数字。请你给出该分数的最好表示方法。原创 2018-07-02 10:07:46 · 212 阅读 · 0 评论 -
从八编码问题看搜索算法
八数码问题也称为九宫问题。在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的某一数字,不同棋子上标的数字各不相同。棋盘上还有一个空格,与空格相邻的棋子可以移到空格中。要求解决的问题是,现在给出一个初始棋盘状态和一个目标棋盘状态,找出一种从初始转变成目标状态的移动棋子步数最少的移动步骤,输入中0表示空格。原创 2018-05-29 20:51:02 · 389 阅读 · 0 评论 -
递归入门(六) 楼梯问题
题意:有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?原创 2018-01-07 16:58:21 · 624 阅读 · 1 评论 -
BFS系列(二) 取数字问题
题意:给定M×N的矩阵,其中的每个元素都是-10到10之间的整数。你的任务是从左上角(1,1)走到右下角(M,N),每一步只能够向右或者向下,并且不能够走出矩阵的范围。你所经过的方格里面的数字都必须被选取,请找出一条最合适的道路,使得在路上被选取的数字之和是尽可能小的正整数。原创 2018-01-02 21:59:17 · 279 阅读 · 1 评论 -
BFS系列(一) 迷宫打印路径
题意:有一个m*n格的迷宫(表示有m行、n列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,输入这m*n个数据和起始点、结束点(起始点和结束点都是用两个数据来描述的,分别表示这个点的行号和列号)。现在要你编程找出所有可行的道路,要求所走的路中没有重复的点,走时只能是上下左右四个方向。如果一条路都不可行,则输出相应信息(用-1表示无路)。原创 2018-01-01 17:44:32 · 372 阅读 · 1 评论 -
DFS系列(四) 素数环问题
题意:有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环。为了简便起见,我们规定每个素数环都从1开始。例如,下图就是6的一个素数环。有多组测试数据,每组输入一个n(0原创 2017-12-17 11:18:28 · 1003 阅读 · 1 评论 -
DFS系列(三) 全排列字典序输出问题
题意:输入n,输出n的全排列,按字典序输出。只有一个整数n(1≤n≤9)。按字典序输出由1~n组成的所有不重复的数字序列,每行一个序列,每个数字之间有一个空格。原创 2017-12-16 20:44:39 · 1051 阅读 · 1 评论 -
DFS系列(二) 棋盘问题
题意:在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。输入含有多组测试数据。每组数据的第一行是两个正整数 n和k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。其中 n原创 2017-12-16 19:37:01 · 1189 阅读 · 1 评论 -
DFS系列(一) 八皇后经典问题
八皇后问题是一个以国际象棋为背景的问题,即如何能够在 8×8 大小的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?也就是说,使得棋盘中每个横向、纵向、左上至右下斜向、右上至左下斜向均只有一枚皇后棋子。请求出所有可能情况并打印。因为八枚棋子不在同一个列行和对角线上,即每行只会有一个皇后,每列只有一个皇后,所以每一个棋子在每一行有八种情况,我们只需一行行放棋子,判断哪一列符合条件就放上,然后继续判断下一行直到第八行即可。原创 2017-12-16 16:34:55 · 439 阅读 · 1 评论 -
递归入门(五) 青蛙过河
题意:(1)一条小溪尺寸不大,青蛙可以从左岸跳到右岸,在左岸有一石柱L,石柱L面积只容得下一只青蛙落脚,同样右岸也有一石柱R,石柱R面积也只容得下一只青蛙落脚。(2)有一队青蛙从小到大编号:1,2,…,n。初始时青蛙们只能趴在左岸的石头 L 上,按编号一个落一个,小的落在大的上面,不允许大的在小的上面。(3)在小溪中有S个石柱、有y片荷叶。规定溪中的每个石柱上如果有多只青蛙也是大在下、小在上,每个荷叶只允许一只青蛙落脚。原创 2017-12-15 17:18:51 · 974 阅读 · 1 评论 -
递归入门(四) 汉诺塔系列拓展
n个盘子的汉诺塔问题的最少移动次数是,即在移动过程中会产生个系列。请计算移动过程中所有会产生的系列总数。包含多组数据,首先输入T,表示有T组数据.每个数据一行,是盘子的数目N原创 2017-12-15 15:48:21 · 842 阅读 · 1 评论 -
递归入门(三) 经典汉诺塔问题
汉诺(Hanoi)塔问题:古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上(如图)。有一个和尚想把这64个盘子从A座移到C座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用B座,要求打印移动的步骤。原创 2017-12-14 22:21:56 · 496 阅读 · 1 评论 -
递归入门(二) The 3n + 1 problem
题意:对于给定的n,是有可能计算出该算法共输出了多少个数的,包括结尾的1,这个数叫做n的周期长度。在上面的例子中,22的周期长度是16。对于任何两个数字i和j,求出在i和j之间的数中,周期长度最大的那个数的周期长度。原创 2017-12-14 21:20:51 · 440 阅读 · 0 评论 -
递归入门(一) 递归的函数
题意:给定一个函数 f(a, b, c):如果 a ≤ 0 或 b ≤ 0 或 c ≤ 0 返回值为 1;如果 a > 20 或 b > 20 或 c > 20 返回值为 f(20, 20, 20);如果 a < b 并且 b < c 返回 f(a, b, c−1) + f(a, b−1, c−1) − f(a, b−1, c);其它情况返回 f(a−1, b, c) + f(a−1, b−1, c) + f(a−1, b, c−1) − f(a-1, b-1, c-1)。原创 2017-12-14 20:53:30 · 592 阅读 · 1 评论