
BFS
FrostMonarch
这个作者很懒,什么都没留下…
展开
-
leetcode 139. 单词拆分(BFS 或者 DP)
题目大意:给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。示例 2:输入: s = "applepenapple",.原创 2020-05-27 09:53:08 · 312 阅读 · 0 评论 -
leetcode 最少跳跃次数(BFS,剪枝)
题目大意:已知an,从i出发的话,每次我们可以选择走去min(n,i+ a[i]),或者[0,i-1],现在问我们最少几步可以走到n.n<=1e6解题思路:无权最短路,优先考虑BFS,但是我们每次假如按照题意每次都往前走的话会超时复杂度n^2,那么我们可以怎么改进呢?我们发现,从i位置出发,下次走的时候枚举的起点不必要从0开始到i-1,假如之前我们已经在u点往前跳过了,那么...原创 2020-04-18 18:28:51 · 569 阅读 · 0 评论 -
codeforces 605 div3 Nearest Opposite Parity(反向建图 超级源 BFS)
题目大意:现在有一个无权图,每个节点都是0或者1,问所有0节点到最近邻1节点的距离以及所有1节点到所有0节点的最短距离。解题思路:无权图最短路径很容易想到BFS,但是假如直接对每个节点都做BFS,复杂度O(N^2)会超时。另外,很容易地我们也想打一个记忆化搜索,因为有些信息是我们重复了的,比如某个0节点到1节点的最近距离,已经跑过一次了我们就不需要再跑一次。但是,问题是这里我们用BFS...原创 2020-01-01 20:11:34 · 173 阅读 · 0 评论 -
codeforces 565 div3 Cover it ! (BFS)
题目大意:有一个图G,G中有n个顶点。图G中把点分为两部分,其中一部分是A,另一部分是B,且B中每个顶点都和A中的顶点相连,问应该怎么分A,B。注意A,B两部分的顶点不能超过题解:我们注意到BFS遍历有一个特点就是:每一层都和另外一层相连,通过这个特点,我们可以选择BFS中的奇数层或者偶数层,取决于奇数层还是偶数层具有较少的总顶点数,可以这样选取的主要原因在于不可能 奇数层或者偶数层同...原创 2019-07-03 17:26:16 · 187 阅读 · 0 评论 -
UVA 314 Robot (BFS)
题目大意:有一个机器人走迷宫,每次可以走一格或者三格,然后中间有一些障碍不能走,这些障碍会挡住机器人。题解:无权图最短路径,优先考虑BFS,在这里我们知道,这个题目有一个关键的hints就是每个格子能走4个方向(分别对应机器人的四个朝向),为什么要区分能走4个方向,而不是平时的BFS只能走一次呢?因为这里的机器人不同朝向时,往下一步走的cost不一样!同一个方向走到某一格(r,c)的时...原创 2019-07-13 17:39:56 · 218 阅读 · 0 评论 -
atcoder beginner contest 132 Hopscotch Addict(BFS变形 编码)
题目大意:有一个有向图,我们定义操作:每次我们可以走3格。问从起点s到终点t,能不能恰好在n次操作后恰好达到。若能达到,最少需要多少次的操作。解题思路:无权图最短路,我们很容易想到使用BFS来解决。可是,这里区别于一般的BFS,我们每次要走3格。因为我们最终能到达的话,终点到起点的距离必然是3的倍数,所以图上的点最多只会走三次,例如:我们这个点v到起点s的距离可以为1,2,3,那么假如...原创 2019-06-30 22:15:25 · 353 阅读 · 0 评论