cf 442 div2 D bfs最短路
2017-10-24 14:00
288 查看
题意:本题就是说 给你一个n m的矩阵 n,m<=1000 每一个位置要么是'.' (可行) 要么是‘#’ (不可行) 每一秒 我们可以走1~k 步 问由(x1 y1)到(x2,y2)的最短用时
思路:不难想到是一个裸的bfs题目,但我最终tle了 orz 我自己的优化是这样的 对于当前位置 x,y 如果现在他前进的方向 之前走过 我们记录一个跳转的值 表示从这一位置能跳过的长度 这样能够减少不必要的判断(写丑了)
本题还有一些重要剪枝 :1 我们在拓展位置的时候 如果拓展到答案直接退出 而不是等到从queue 中front 出答案才break 这样的速度能差出几倍 因为前者相当于遍历完深度为ans-1 即可 而后者要遍历出来 ans 层才可以。
2 这个剪枝是本题核心剪枝:我们考虑 一个时间戳 表示到达每一个位置的最短时间 对于 要到达的位置如果 nxt>t[x][y] 那么x,y 位置及其之后不用在找了 (这样能够减少许多循环 也能减少许多 结点)
思路:不难想到是一个裸的bfs题目,但我最终tle了 orz 我自己的优化是这样的 对于当前位置 x,y 如果现在他前进的方向 之前走过 我们记录一个跳转的值 表示从这一位置能跳过的长度 这样能够减少不必要的判断(写丑了)
本题还有一些重要剪枝 :1 我们在拓展位置的时候 如果拓展到答案直接退出 而不是等到从queue 中front 出答案才break 这样的速度能差出几倍 因为前者相当于遍历完深度为ans-1 即可 而后者要遍历出来 ans 层才可以。
2 这个剪枝是本题核心剪枝:我们考虑 一个时间戳 表示到达每一个位置的最短时间 对于 要到达的位置如果 nxt>t[x][y] 那么x,y 位置及其之后不用在找了 (这样能够减少许多循环 也能减少许多 结点)
相关文章推荐
- Codeforces Round #408 (Div. 2) D. Police Stations 最短路、BFS
- cf 295 div 2 B (bfs)
- Codeforces Round #442 (Div. 2) Olya and Energy Drinks(搜索 bfs 套路题)
- cf 843 D Dynamic Shortest Path [最短路+bfs]
- Codeforces Round #302 (Div. 2) D bfs最短路
- cf 442 div2 F. Ann and Books(莫队算法)
- Codeforces Round #361 (Div. 2) B BFS最短路
- Codeforces Round #442 (Div. 2) D. Olya and Energy Drinks (bfs)
- Codeforces Round #179 (Div. 1) C. Greg and Friends(BFS 或者最短路)
- Codeforces Round #325 (Div. 2) D bfs
- Codeforces Round #301 (Div. 2) C. Ice Cave(BFS)
- Codeforces Beta Round #25 (Div. 2 Only) - C. Roads in Berland (最短路松弛)
- cf 2016愚人节专场 函数指针 最短路
- Codeforces Round #295 (Div. 2) B bfs
- SPOJ - ADACYCLE - Ada and Cycle - 带环最短路(BFS) - Mutual Training for Wannafly Union #7
- 图--用BFS求最短路
- CF 题目集锦 PART 7 #264 div 2 E
- cf 127 div .1 Fragile Bridges(dp 好题)
- CF 280B. Vanya and Lanterns(div2)
- CF 251 div2 题解