摘要: A*算法: 单源单汇第k短路: 给定一个源点s和一个汇点t,求解从s到t的第k短路。 建立反图,从反图中,以t为源点跑单源最短路,得到原图中i点到t点的最短路val[i](也就是反图中t点到i点的最短路) 用val[i]作为估价函数,当前**状态(dis[i],i)**的距离为dis[i],把(di 阅读全文
posted @ 2021-02-10 04:57 purinliang 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 给定一组不等式: \(x_{v1}-x_{u1}\le w_1\) \(x_{v2}-x_{u2}\le w_2\) (注意上面的变量的位置是(v,u,w)而不是(u,v,w)) 求满足上面约束的一组可行解,变形为 \(dis[v_1]\le dis[u_1]+w_1\) ,故从点 u 连接一条权值 阅读全文
posted @ 2021-02-10 04:06 purinliang 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 常见技巧: 新建超级源点:例如求到达一个点集中的任意一个点的最短路,就把这个点集的点都从一个超级源点连出 分层图最短路:给最短路多带上一个属性(例如使用某个优惠条件/加倍条件k次,有时候可以提前使用或者存储起来以后使用某个条件) 同余最短路:给n个整数a1,a2,an,求他们不能线性组合出的[lim 阅读全文
posted @ 2021-02-10 02:58 purinliang 阅读(53) 评论(0) 推荐(0) 编辑
摘要: 适用于求解没有负环的全源最短路,最坏时间复杂度 \(O(nm\log m)\) 比Floyd要优秀(但是Floyd可以找出负环)。 在没有负权边时,使用n次单源最短路Dijkstra代替即可。 算法流程: 1、新建一个虚拟节点(编号为n+1),向[1,n]连接一条边权为0的虚拟边。 2、从n+1号节 阅读全文
posted @ 2021-02-10 02:53 purinliang 阅读(728) 评论(0) 推荐(0) 编辑