LGP4473口胡

为什么没有老哥写 O(nm) 个点和边的优化建图啊(

跳出去太难了,逆向思维,考虑怎么跳回来。

计算 (s,t) 的最短路改为计算 (t,s) 的最短路,这样子相当于进入节点时需要付出 wv 的代价。

而有一个结论就是第一个松弛该节点的点一定是最短路。因为 wv 显然不大于别的任何 wv+wu,且松弛节点一定是已有节点中距离最短的。

于是考虑怎么跳回来。显而易见的是对于曼哈顿距离只需要旋转四遍分别考虑就行了。

原本条件下 (x1,y1) 能到 (x2,y2) 的条件是 x1x2+y1y2B[x1][y1],其实直接考虑建反边就行了。上述条件等价于 x1+y1B[x1][y1]x2+y2,使用前缀和优化建图即可。

显然上述过程点和边的数量都是 O(nm) 的,所以我们得到了一个直接 Dijkstra 就能通过的算法。

posted @   Prean  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
var canShowAdsense=function(){return !!0};
点击右上角即可分享
微信分享提示