类BFS问题的求解(01BFS,优先队列BFS)(25.9.23)
类BFS问题的求解(01BFS,优先队列BFS)
概述
此BFS是用在带权求得最小值的搜索问题上的,通过双端队列的优化和优先队列的优化,可以大幅度降低时间复杂度
思考方向(考察可能与应对)
-
给定一个图,图有带权性质,搜索过程是贪心(权值越大/越小 越好),比如:染色能力,多种消耗可能
模板:优先队列BFS板子
模板:01BFS板子
-
考虑抽象题目中的“变化”,发现有东西处于“消耗”,可以假设为边权,尽量尝试将变化抽象为0 1等权值
-
发现题目是搜索,就考虑怎么去转化成权值增加 棋盘
杂述
发现有的坐标没法用二维数组存,可以建图直接存
好题:等红绿灯 可以使用优先队列BFS拿到部分分,然后还有一个优化就是,一个点的搜索,可以到的地方尽可能少(比如原本可以到左边n格,但是只需要传递一下剩余可到数,让它只能到左边一格就好),优化本质就是,让每个点可到地减少,避免反复重复的遍历,减少无用过程
最后此题正解是:双端队列+题意转化,想办法把当前权值转换成等了几次红灯,直接从优先队列转换为了01BFS,使用的时间更少,所以在下次遇见优先队列的BFS,先考虑有没有什么变量可以使其变为01BFS