知识整理及技巧总结——搜索
注:只整理了一些比较常用的并且考的可能大的知识点
- Flood Fill
- 典型例题
P1514 [NOIP2010 提高组] 引水入城
- 典型例题
- 搜索剪枝
- 常用搜索剪枝:
- 优化搜索顺序
大部分情况下,我们应该优先搜索分支较少的结点 - 排除等效冗余
不考虑顺序的情况下,一般用组合数搜索,不用排列数 - 可行性剪枝
如果当前状态已不合法,那么当前状态的所有子状态均不合法,退出 - 最优性剪枝
如果当前搜到的状态已比当前的最优解差,显然所有子状态一定不是最优解,退出 - 记忆化搜索(DP)
- 优化搜索顺序
- 典型题目
- [NOIP2009 提高组] 靶形数独
- [NOIP2011 提高组] Mayan 游戏
- [NOIP2015 提高组] 斗地主
- 小木棍
- 常用搜索剪枝:
- 折半搜索/双向搜索
- 折半搜索,即 meet in middle。
- 是一类可以优化搜索复杂度的方法。假设原来的搜索复杂度为 \(O(2^n)\),一般可将其优化成搜索复杂度 \(O(2^{\frac{n}{2}})\),合并复杂度 \(O(n)\) 或 \(O(n\log n)\)的方法。
- 在搜索起点和终点确定的情况下,分别从起点和终点开始搜索,当到达相应深度的节点相遇时就停止,对所有搜索到的叶子节点统计答案,一般可以用 \(O(1)\) 的 unordered_map 或 \(O(log n)\) 的 map,也有 pbds 中 \(O(1)\) 的 cc_hash_table 和 gp_hash_table,也可以自己手写 hash 表。
- 典型题目
- 折半搜索,即 meet in middle。
- 启发式搜索
一般不太常用,主要思想就是通过贪心来实现一个正确性较高的估价函数,通过估价函数进一步判断接下来的操作。- 典型例题

浙公网安备 33010602011771号