搜索题推荐

Posted mhp的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搜索题推荐相关的知识,希望对你有一定的参考价值。

 

(转自网络博客):

POJ

POJ 1376 – Robot(基础)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1376

题意:略

解法:bfs,A*….

POJ 2688 – Cleaning Robot(基础)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2688

题意:bfs后转换为tsp问题

解法:bfs+dp,bfs+dfs

相关:http://hi.baidu.com/zfy0701/blog/item/ceb06f261749a6128a82a1b2.html

POJ 3322 – Bloxorz I(基础)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3322

题意:略,这个游戏本身很好玩http://jandan.net/2008/01/24/bloxorz.html

解法:广搜,双向广搜

相关:http://hi.baidu.com/zfy0701/blog/item/d7b6490f847948e8ab6457c6.html

POJ 2308 – Dearboy’s Puzzle(中等,但做的人少?)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2308

题意:判断连连看是否有解

解法:DFS + BFS

相关:http://hi.baidu.com/zfy0701/blog/item/c62f41af65aa1fca7cd92afc.html

POJ 1324 – Holedox Moving(中等)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1324

题意:略

解法:A*,dfs + 上界剪枝,广搜

相关:http://hi.baidu.com/zfy0701/blog/item/7fcaba2c3d5425e98a1399cf.html

http://hi.baidu.com/zfy0701/blog/item/a3c44ecc049b1c1501e92806.html

POJ 1084 – Square Destroyer(中等,经典题)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1084

题意:把每个正方型看做集合中的元素,每个木棒看做是一个子集,求最小的子集覆盖

解法:dfs,A*,广搜肯定爆空间

POJ 2449 Remmarguts’ Date(中等,强烈推荐)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2449

题意:经典问题:K短路

解法:dijkstra+A*,方法很多

相关:http://acm.pku.edu.cn/JudgeOnline/showcontest?contest_id=1144

POJ 2044 – Weather Forecast(中等)

 

http://acm.pku.edu.cn/JudgeOnline/problem?id=2044

题意:略

解法:广搜,dp,深搜

相关:http://hi.baidu.com/zfy0701/blog/item/d7b6490f847948e8ab6457c6.html

POJ 3635 full tank?(中等)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3635

题意:最短路变形

解法:广搜

相关:http://hi.baidu.com/hnu_reason/blog/item/086e3dccfc8cb21600e9286b.html

POJ 3074 – Sudoku(中等)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3074

题意:数独游戏,数据比2676强很多,但比3076弱

解法:用dfs回溯基本可过,不过每次应选择可能填的数字最少的格子搜

更快的方法是先转换成exact cover问题,然后用经典dancing links解决,

dancing links原始论文:http://lanl.arxiv.org/PS_cache/cs/pdf/0011/0011047v1.pdf

翻译:http://sqybi.com/works/dlxcn/

POJ 1475 – Pushing Boxes(中等,很推荐)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1475

题意:推箱子游戏

解法:双重bfs(对箱子bfs 时 对人bfs),A*

POJ 1077 – Eight(中等,此题不做人生不完整)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1077

题意:八数码问题,超经典题

解法:广搜,A*,双向广搜

poj1184聪明的打字员

如果觉得自己BFS的题做得差不多了,可以做一下这道题.作了这道题开始对BFS刮目相看了~花了整整一晚上写代码,改代码~

 

POJ 1069 -The Bermuda Triangle(难)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1069
题意:用给定三角型填充六边形
解法:此题的思想上精华在于坐标化
ps:传说中比较bt,确实比较bt,主要很容易写错,我ac了,但程序没完全对....

POJ 1077 - Eight(中等,此题不做人生不完整)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1077
题意:八数码问题,超经典题
解法:广搜,A*,双向广搜
相关:http://hi.baidu.com/zfy0701/blog/item/7fcaba2c3d5425e98a1399cf.html
(百度之星的版本,强烈推荐):http://acm.hnu.cn:8080/online/?action=problem&type=show&id=10466&courseid=0

POJ 1084 - Square Destroyer(中等,经典题)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1084
题意:把每个正方型看做集合中的元素,每个木棒看做是一个子集,求最小的子集覆盖
解法:dfs,A*,广搜肯定爆空间

POJ 1167 - The Buses(好难啊)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1167
题意:这道题综合了很多经典的深搜技巧,狂顶
解法:dfs

POJ 1190 - 生日蛋糕(基础,好题)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1190
题意:略
解法:dfs,题偏简单,但做出来还是有些感觉的

POJ 1324 - Holedox Moving(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1324
题意:略
解法:A*,dfs + 上界剪枝,广搜
相关:http://hi.baidu.com/zfy0701/blog/item/7fcaba2c3d5425e98a1399cf.html
http://hi.baidu.com/zfy0701/blog/item/a3c44ecc049b1c1501e92806.html

POJ 1376 - Robot(基础)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1376
题意:略
解法:bfs,A*....

POJ 1475 - Pushing Boxes(中等,很推荐)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1475
题意:推箱子游戏
解法:双重bfs(对箱子bfs 时 对人bfs),A*

POJ 1945 - Power Hungry Cows(??)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1945
题意:略
解法:在一份解题报告中被列为难题,不过好好像写了个很简单很暴力的bfs就过了...速度还是有些慢,暂时想不到好的启发函数

POJ 2044 - Weather Forecast(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2044
题意:略
解法:广搜,dp,深搜
相关:http://hi.baidu.com/zfy0701/blog/item/d7b6490f847948e8ab6457c6.html

POJ 2286 - The Rotation Game(较难)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2286
题意:略
解法:IDA*(迭代加深+上下界强剪
相关:http://hi.baidu.com/zfy0701/blog/item/ce0f802261bfbba14723e871.html

POJ 2308 - Dearboy‘s Puzzle(中等,但做的人少?)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2308
题意:判断连连看是否有解
解法:DFS + BFS
相关:http://hi.baidu.com/zfy0701/blog/item/c62f41af65aa1fca7cd92afc.html

POJ 2426 Remainder(较难,=)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2426
题意:略,主要是数论部分比较容易让人抓狂
解法:bfs
相关:http://hi.baidu.com/zfy0701/blog/item/7fcaba2c3d5425e98a1399cf.html

POJ 2449 Remmarguts‘ Date(中等,强烈推荐)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2449
题意:经典问题:K短路
解法:dijkstra+A*,方法很多
相关:http://acm.pku.edu.cn/JudgeOnline/showcontest?contest_id=1144

POJ 2688 - Cleaning Robot(基础)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2688
题意:bfs后转换为tsp问题
解法:bfs+dp,bfs+dfs
相关:http://hi.baidu.com/zfy0701/blog/item/ceb06f261749a6128a82a1b2.html

POJ 2908 - Quantum(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2908
题意:其实就是找单源最短路径
解法:优先队列广搜(即dijkstra),建议用位运算优化

POJ 3074 - Sudoku(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3074
题意:数独游戏,数据比2676强很多,但比3076弱
解法:用dfs回溯基本可过,不过每次应选择可能填的数字最少的格子搜
更快的方法是先转换成exact cover问题,然后用经典dancing links解决,
dancing links原始论文:http://lanl.arxiv.org/PS_cache/cs/pdf/0011/0011047v1.pdf
翻译:http://sqybi.com/works/dlxcn/

POJ 3322 - Bloxorz I(基础)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3322
题意:略,这个游戏本身很好玩(http://jandan.net/2008/01/24/bloxorz.html
解法:广搜,双向广搜
相关:http://hi.baidu.com/zfy0701/blog/item/d7b6490f847948e8ab6457c6.html

POJ 3460 - Booksort(较难,很推荐)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3460
题意:略
解法:IDA*,A*,DFS*
相关:http://hi.baidu.com/zfy0701/blog/item/5c5a404b0f73ecf582025ce4.html

POJ 3523 - The Morning after Halloween(较难)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3523
题意:把所有机器人移到各自的位置,不能相撞或重合
解法:我的状态设计太暴力了:以所有机器人位置表示状态。然后用A*过,排倒数第几,郁闷。谁知道好的状态设计方法告诉我^_^

POJ 3633 - Copying DNA(较难)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3633
题意:一个填充字符串的搜索题
解法:各种搜法皆宜
相关:算法的实现较挑战,我是参考了 http://www.wiskey86.cn/wordpress/?p=54 才搞定的

POJ 3635 full tank?(中等)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3635
题意:最短路变形
解法:广搜
相关:http://hi.baidu.com/hnu_reason/blog/item/086e3dccfc8cb21600e9286b.html

 

HDU

1241       Oil Deposits (dfs的连通块个数)

1016       Prime Ring Problem(基础)

1584       蜘蛛牌(简单dfs,简单的剪枝,还有人用DP做(???))

1426       Sudoku Killer(练习递归的好题目 or Dancing links(???))

2510       符号三角形(打表题,写写打表程序还是不错的)

2553       N皇后问题(在n较小时,是经典的练习递归枚举的题目,n较大时状压(???))

3350       #define is unsafe (练习递归的好题目)(用结构体做返回值同时返回多个参数)

2821       Pusher( 看上去有点吓人,实际是简单题,搜就好了 )

2782       The Worm Turns(实际是简单题,搜就好了)

2616       Kill the monster(bfs+位运算 或 dfs 或 STL枚举全排列,总之,就是暴力……)

3500       Fling(实际是简单题,搜就好了)

2514       Another Eight Puzzle

1547       Bubble Shooter(思路是搜两次,dfs或bfs)

1175       连连看(dfs 或 bfs)

1728       逃离迷宫(和连连看一样)

剪枝:

典型题目:

1010       Tempter of the Bone(标准迷宫dfs,学习剪枝的开始)

学习了: 极限情况下的剪枝

    奇偶性剪枝

    ((a,b)走到(c,d) a+b c+d 奇偶性相同,需要走偶数步;否则走奇数步)

1455       Sticks(剪枝的好题目,黑书例题,坑了我好久的说)

学习了:  排序后解答树同层避免重复搜索

             调整法(全集不行与子集肯定不行)

             想法:每根小棍子都要被配对,当前情况下第一根无法配对,直接return

避免重复的题目还有:

1258       Sum It Up

2610       Sequence one( 让我认识了 stable_sort()  )

2611       Sequence two( 在”2610 Sequence one”的基础上稍加修改即可)

 

Bfs:

 

一些简单题目:

1180       诡异的楼梯 (bfs可以加自己)

2102       A计划

1240       Asteroids! (单纯的三维bfs )

1253       胜利大逃亡 (单纯的三维bfs,加个剪枝: a+b+c-3>limit快了一倍)

1548       A strange lift  

2717       Catch That Cow

1372       Knight Moves(或【双广】也可以)

1312       Red and Black

2612       Find a way

2531       Catch him    

1252       Hike on a Graph

 

找状态hash判重很重要

帮助我理解“状态”的题目:

1732       Push Box(8维数组hash状态)

1429       胜利大逃亡(续)

理解:

  一开始不知道怎么搜

  和队友探讨,让我认识到 宽搜是很盲目,很随意的事情

  搜就好了,碰到目标节点再说

“状态”练习题目:

1254       推箱子         ( bfs套bfs,走过的点还可以再走 )

1495       非常可乐(白书的例题—“倒水问题”)

2364       Escape

2579       Dating with girls(2)

1104       Remainder(自己在做的过程中逐渐找到了”状态”,和数论沾点边)

 

bfs中经常碰到这样一类问题,加入节点的顺序与队列中节点的单调性不一致,这个时候用到优先队列来代替普通队列。我自己是用一个delay(延迟标记),让这类节点先只向自己拓展,之后再向其他节点拓展。

“延迟”相关题目:

1240       Rescue (可以加自己,延迟入门)

4198       Quick out of the Harbour

1206       Ignatius and the Princess I(性价比高的宽搜题目)

2416       Treasure of theChimpIsland

2653       Waiting ten thousand years for Love

( 从这里引入了Dijkstra 最短路算法??????? )

 

还有就是【双向广搜】

碰到了几道可以用双广解决的题目,用普通bfs也可以:

1401       Solitaire       (【双广】,用普通bfs也能过)(好题)

1195       Open the Lock(普通bfs,状态,或【双广)

 

一个问题:

判重用数组有时是严重浪费的,状态并没有那么多,但为了能完全表示,浪费了很多空间,甚至开不下数组,这个时候用hash技术……(还不太会%>_<%)

 

Dfs&Bfs:

1044       Collect More Jewels(好题)

这个题目提供了一种思路:

       bfs预处理构造隐式图,然后dfs枚举所有情况求出最优解

1072       Nightmare(和上题同样的思路)

1983       Kaitou Kid - The Phantom Thief (2) (好题)(dfs枚举可能情况,然后bfs判定是否可行)

 

以上是关于搜索题推荐的主要内容,如果未能解决你的问题,请参考以下文章

uniapp小程序—— 配置首页搜索框

基于搜索推荐系统根据用户搜索频率(热搜)排序

有啥好用的网盘搜索引擎可以推荐?

亿级日搜索量的美团如何构建高效的搜索系统?

《搜索和推荐中的深度匹配》——2.2 搜索和推荐中的匹配模型

《搜索和推荐中的深度匹配》——2.2 搜索和推荐中的匹配模型