avatar
文章
12
标签
3
分类
7
首页
归档
分类
标签
Qianmo's Blog
首页
归档
分类
标签

Qianmo's Blog

洛谷 P1032 [NOIP 2002 提高组] 字串变换
发表于2025-04-21|搜索
本题采用双向 BFS 来解决。 首先分析一下时间复杂度:变换规则数 R≤6R \leq 6R≤6 ,字符串长度 L≤20L \leq 20L≤20,操作数在 10 次以内,用朴素 BFS 的时间复杂度为 O((L⋅R)10)O((L\cdot R)^{10})O((L⋅R)10) ,完全爆炸;采用双向 BFS 的时间复杂度为 O((L⋅R)5)O((L\cdot R)^{5})O((L⋅R)5) ,相对于朴素做法降低了很多的时间复杂度。 但对于本题,可能出现以下情况:每次变换可能在字符串的多个位置替换、变换规则可能形成“无限繁殖”的状态等,导致搜索空间飞速增长。双向 BFS 并不能保证通过本题的数据,但也是一种优化搜索的方法。 双向 BFS 的具体步骤: 开两个队列 qa,qbqa,qbqa,qb,一开始分别把起点和终点丢入队列中。 每次选择较小的队列进行扩展,将队头其可能经过变换规则得到的字符串丢入队列中(注意假如扩展 qbqbqb...
洛谷 P9243 蓝桥杯 2023 省B 岛屿个数
发表于2025-04-21|搜索
本题要求求一个地图中的岛屿数量,但是不包括子岛屿(在其它岛屿围成的环之间)。 对于求岛屿,可以使用搜索中的 Flood Fill 算法来实现,对每个为 111 的陆地进行 BFS,标记与它相邻的所有陆地。为了实现环内部的岛屿不被统计,我们可以先 BFS 海域,在 BFS 海域的过程中如果遍历到为 111 的陆地,就来一遍 Flood Fill 将其相邻的陆地全部打上标记,如果遍历到为 000 的海水就不入队(只有 000 会入队)。 需要注意的是,遍历海域是八个方向拓展的,而遍历陆地是四个方向扩展的。同时我们能保证海水拓展八个方向得到的岛屿都不在环内,这是因为陆地不入队,岛屿在环内的话是进不去的。可以借助下面样例来理解: 123450111111001101011000111111 我们不可能遍历到 (3,2)(3,2)(3,2) 位置的 000 的,因为 000 不入队,遍历海域是进不到环内的,自然就遍历不到环内的 111 了。所以我们对于每次 Flood Fill,直接将答案加 111...
12
avatar
Qianmo
文章
12
标签
3
分类
7
Follow Me
公告
This is Qianmo's Blog
最新文章
正则化2025-10-10
2025年中国矿业大学转计算机学院机试题面及题解(回忆版)2025-05-07
MATLAB/Octave 学习笔记2025-04-29
梯度下降和正规方程2025-04-23
最小表示法2025-04-21
分类
  • 博弈论1
  • 双指针1
  • 图论1
  • 字符串3
  • 搜索2
  • 机器学习1
  • 杂项1
标签
学习笔记 算法 题解
归档
  • 十月 2025 1
  • 五月 2025 1
  • 四月 2025 10
网站信息
文章数目 :
12
本站访客数 :
本站总浏览量 :
最后更新时间 :
©2025 By Qianmo框架 Hexo 7.3.0|主题 Butterfly 5.4.0-b1