![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
枚举与搜索
qcwlmqy
我很懒,所以不写
展开
-
Acm枚举 详细整理 [SCOI2005]扫雷 、Colorful Slimes、Atcoder Shorten Diameter
枚举 acm做题的过程中,遇到枚举类型的题目,往往不是枚举所有的情况 枚举类型题目往往通过枚举关键值,而决定其他的值 在做枚举类型的题目时,寻找决定答案的关键值是最重要的 [SCOI2005]扫雷 分析 这道题看似每个格子是否有雷都有0,1两种情况,然后210002^100021000的复杂度成功爆炸 但根据扫雷的规则,对于第二列的每个b[i]b[i]b[i],只要知道第一列a[i−1],a[i]...原创 2019-07-24 21:15:46 · 194 阅读 · 0 评论 -
floodfill算法(洪水漫盖法、种子填充法) UVA572、HDU 5319、HDU 4574
floodfill 找到一个未被访问过的需要填充的点,以这个点为起点向四周扩展直至边界,填充次数即为连通块数 UVA572 Oil Deposits 题意 输入多个m行n列的矩阵,用0 0表示输入结束。 找出有多少块石油区域 用“@”代表石油 假如两个“@”在横,竖或对角线上相邻,就说它们位于同一区域 对于每个输入,输出一个数表示有几个石油区域。 分析 每次选择@向八个方向递归填充即可,将已经勘探...原创 2019-07-25 10:22:23 · 318 阅读 · 0 评论 -
BFS 题目整理 POJ2251、HDU1429、POJ3182、USACO06、UVA10047 The Monocycle
BFS POJ 2251 Dungeon Master 题意 有一个三维监狱,每一步可以向东,向西,向北,向南,向上,向下移动 ‘S’为起点,'E’为出口,’#‘为墙,’.'为路 分析 找到起点,直接bfs即可 代码 #include <iostream> #include <cstdio> #include <algorithm> #include <q...原创 2019-07-25 11:28:47 · 147 阅读 · 0 评论 -
DFS 常用剪枝及题目整理 UVA307 Sticks、POJ1011、HDU1426
DFS 剪枝 排除等效冗余 先搜1再搜2和先搜2再1相同,每次从上个搜索的地方搜起 数论优化 搜索过程中往往富含数学规律,常见的为搜索结果为某数的约数 搜索顺序优化 选择优秀的搜索顺序,比如从大到小搜索 可行性剪枝 搜索过程即可预判最终结果失败 记忆化搜索 将已搜索到的结果存起来,再次搜索可以直接得到答案 最优化剪枝 搜索过程即可以预判存在更优解或非最优解 上下界剪枝 搜索的起点和终点是有限制的...原创 2019-07-25 23:31:57 · 156 阅读 · 0 评论 -
迭代加深搜索 整理 Addition Chains、UVA1283 Infiltration
迭代加深搜索 DFS 最大的缺陷在于每个搜索分支深入过深 当答案在比较浅的位置的时候花费了过多的时间在无效搜索分支中 迭代加深搜索首先深度优先搜索 k 层 若没有找到可行解,再深度优先搜索 k+1 层,直到找到可行解为止 由于深度是从小到大逐渐增大的,所以当搜索到结果时可以保证搜索深度是最小的 本质:迭代加深本质上是通过枚举的手段为 DFS 增加了一个深度条件剪枝 Addition C...原创 2019-07-26 01:03:56 · 166 阅读 · 0 评论 -
二分+搜索 HDU6041 I Curse Myself 详解
搜索处理第k小值 - 首先二分目标值,比如最小生成树的权重 - 统计满足二分值搜索到的符合条件的个数 - 检验是否大于等于 k HDU6041 I Curse Myself 题意 给出一个仙人掌图,令第k小生成树的权重为V(k)V(k)V(k) 求∑i=1kV(k)\sum_{i=1}^{k}V(k)∑i=1kV(k) 分析 用到我们上面的方法,我们在搜索第k小的过程中肯定也能搜索1-k小的 所...原创 2019-07-26 17:56:39 · 284 阅读 · 1 评论