随笔分类 -  dijkstra

摘要:题面 这道题我们首先会想到优化建图; 线段树优化建图?不对不对; 那么就具体问题具体分析: 浅显的性质:有可能选择的边一定存在于按x或y排序的相邻的两个点之间; 那么O(n)建图,然后dijkstra就好了; #include <bits/stdc++.h> #define inc(i,a,b) f 阅读全文
posted @ 2019-12-10 19:53 神之右大臣 阅读(272) 评论(0) 推荐(0) 编辑
摘要:题面 我们无论怎么走,都是要从此点沿最短路径走到终点,所以我们以n为原点跑两边dijkstra就可以了; 而抱怨数可以根据之前跑出来的东西新建一个图,然后跑最短路就好了; 阅读全文
posted @ 2019-10-28 11:28 神之右大臣 阅读(178) 评论(0) 推荐(0) 编辑
摘要:1.USACO08JAN Telephone Lines 题面 由于问的是最大值最小,所以二分加验证就好了 比较显然的,题干问的是第k+1长的路最短; 那么二分答案是正确的方向; 但是怎么验证? 我们可以将所有边权大于二分的答案的边视为边权是1,否则看成0; 然后从1~n跑最短路,如果答案大于二分的 阅读全文
posted @ 2019-10-10 19:32 神之右大臣 阅读(446) 评论(0) 推荐(0) 编辑
摘要:题面 首先忽略掉题中k的限制(油量的限制); 那么很清楚的发现:对于一个点(i,j);向(i+1,j),(i,j+1)建立一条容1费0的边;向(i-1,j),(i,j-1)建立一条容1费B的边; 很清楚的:从(1,1)到(n,n)跑费用流就好了; 那么加上k的限制呢? 由于k很小,所以我们可以建立分 阅读全文
posted @ 2019-10-10 12:00 神之右大臣 阅读(185) 评论(0) 推荐(0) 编辑
摘要:题面 这道题是一道不错的计数类DP; 首先我们一定要跑一遍dijkstra来求得每个点到1号点的最短路; 注意题干,题中并没有说所有点都可以到达n好点,只说了存在一条1号点到n号点的路径;所以我们在反向图上BFS求出那些点可以到达n号点; 然后就是dp。我们设计状态:f[u][rest]表示到达u号 阅读全文
posted @ 2019-10-05 10:32 神之右大臣 阅读(228) 评论(0) 推荐(0) 编辑
摘要:想必大家都会求最短路吧,这里就不再多说了;我看有很多人在一顿套模板,什么dijkstra,SPFA等等,这是可以的;但身为OIer,思路要开阔对不对?首先我们注意到,我们可以利用bfs来求每个点的深度。因为在所有边边权为1的时候,点的深度就是点的最短距离;这样在写法上便少了队列优化SPFA中退栈时还 阅读全文
posted @ 2019-10-04 20:23 神之右大臣 阅读(258) 评论(0) 推荐(0) 编辑
摘要:题面 这道题需要用到一个神奇的知识点:log(n*m)=log(n)+log(m); 所以对所有边权取个log,然后算log的最短路的同时维护乘积即可 阅读全文
posted @ 2019-09-20 16:06 神之右大臣 阅读(139) 评论(0) 推荐(0) 编辑
摘要:题面 这道题就是标准的堆优化dijkstra; 注意堆优化的dijkstra在出队时判断vis,而不是在更新时判断vis 阅读全文
posted @ 2019-08-10 13:08 神之右大臣 阅读(241) 评论(0) 推荐(1) 编辑
摘要:Dijkstra算法适用于边权为正的无向和有向图,不适用于有负边权的图!!! 基本思想: 1.将图上的初始点看作一个集合S,其它点看作另一个集合 2.根据初始点,求出其它点到初始点的距离d[i] (若相邻,则d[i]为边权值;若不相邻,则d[i]为无限大) 3.选取最小的d[i](记为d[x]),并 阅读全文
posted @ 2019-07-19 14:20 神之右大臣 阅读(2893) 评论(0) 推荐(0) 编辑

欢迎阅读 『dijkstra』
有什么问题可以联系神之右大臣哦
点击右上角即可分享
微信分享提示