dijkstra
CaprYang
这个作者很懒,什么都没留下…
展开
-
一个人的旅行 HDU - 2066 dijkstra
题解 使用dijkstra算法+堆优化 处理时将所有起点加入队列并设置起点代价为0 跑完最短路在所有终点中选代价最小的一个 注意为无向图 AC代码 #include <stdio.h> #include <bits/stdc++.h> using namespace std; typedef long long ll; const int INF = 0x3f3f3f3f...原创 2018-12-23 20:55:04 · 290 阅读 · 0 评论 -
comet OJ 热身赛 E. dijkstra dijkstra
题解 利用距离公式建边跑dijkstra 两条线距离c1-c2/sqrt(aa+bb) 线与圆利用点到直线距离-圆半径与0取max 圆到圆直接点距离公式-半径与0取max AC代码 #include &lt;stdio.h&gt; #include &lt;bits/stdc++.h&gt; using namespace std; typedef long long ll; const int...原创 2019-01-19 15:37:33 · 598 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day1 (Div2, onsite) F 爬爬爬山 dijkstra
题解 根据题意 当wls下降一定高度再回到原始高度之后体力值也会回复为原有值 可以将题意简化为如果想要登上高度大于h[1]+k高度的山时要将山缩减为h[1]+k的高度 按照这个规律建图 将无向边拆分为两条 通往高度大于h[1]+k的山的边代价增加与h[1]+k的高度差和0取max后平方 建图完毕后直接跑dijkstra加堆优化即可 AC代码 #include &amp;lt;stdio.h&amp;gt; #in...原创 2019-01-20 18:08:24 · 498 阅读 · 0 评论 -
地铁 CSU - 1808 dijkstra 拆点
题解 每个点有多个线路,不同线路之间切换需要额外代价,直接在队列的节点中记录当前线路编号增加额外代价无法得到最优解。 将原有节点拆分,使用map进行标号,如果当前节点有x个线路相连则将当前节点拆分为x个点,原边只在相同线路的点副本之间连接。 **每个节点,相邻站点编号的副本节点进行相连,代价为编号差。**不用每个副本都两两之间建立边,会导致极端复杂度M^2。 起始节点和终点的副本之间建立0代价边。...原创 2019-04-09 21:02:36 · 688 阅读 · 0 评论 -
2018年北京信息科技大学第十届程序设计竞赛暨ACM选拔赛
A PUBG <dijkstra> 边权不为1时最短路使用dijkstra。 #include <stdio.h> #include <bits/stdc++.h> #define fst first #define sed second using namespace std; typedef long long ll; const int INF = 0x...原创 2019-04-09 22:13:01 · 323 阅读 · 0 评论 -
河南省第九届ACM程序设计竞赛 部分题解
A 表达式求值 <逆波兰> #include <stdio.h> #include <bits/stdc++.h> #define fst first #define sed second using namespace std; typedef long long ll; const int INF = 0x3f3f3f3f; const ll LINF =...原创 2019-04-21 14:14:21 · 1179 阅读 · 0 评论