![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Dijkstra
ethannotlazy
这个作者很懒,什么都没留下…
展开
-
1087 All Roads Lead to Rome (30分)
常规思路,Dijkstra + dfs 先用Dijkstra找出totalCost最小的所有路线,用pre数组记录他们的前驱关系。 用dfs从得到的路线中找出totalHappiness最大的,或者avgHappiness最大的。 注意一些细节,比如输入并没有给出起点城市的happiness。 #include<iostream> #include<string> #include<unordered_map> #include<vector> usin.原创 2020-05-18 23:47:48 · 123 阅读 · 0 评论 -
1072 Gas Station (30分)
对每个可能的加油站点都进行一次Dijkstra,根据题意找出最符合要求的站点。 #include<iostream> #include<vector> #include<algorithm> #include<unordered_map> #include<string> using namespace std; const int inf = 0x7fffffff; int numHouse, numCandidate, numRoad, r..原创 2020-05-11 00:21:15 · 198 阅读 · 0 评论 -
1003 Emergency (25分)
利用Dijkstra最短路算法,用totalWeight记录到达某个城市时最多能搜集的救援队数,用dist表示当前到达某个城市的最短距离;用pre记录某一城市的前驱结点,即从哪个城市来。最后用dfs数出最短路数。 #include<cstdio> #include<algorithm> #include<vector> using namespace std;...原创 2020-02-29 23:30:46 · 91 阅读 · 0 评论 -
1111 Online Map (30分)
可以直接Dijkstra,也可以先用Dijkstra求出所有最短路,再用DFS选出最佳的一条。 直接用Dijkstra解决,需要设置额外的数组: #include<cstdio> #include<vector> #include<algorithm> using namespace std; int intersectNum, streetNum; int...原创 2020-01-30 15:20:13 · 157 阅读 · 0 评论 -
1018 Public Bike Management (30分)
题目 思路 首先想到用Dijkstra可以求出从原点到目的地的最短路。那么问题在于,在若干条最短路上,怎么确定走哪条路需要发出的车数最少。 我们不能仅根据目的地的车数或者路径上的总车数确定需要发出的车数,即发出的车数send和收回的车数back不满足最优子结构,只有在确定了所有最短路之后才能确定send和back的值。 错误示例 用Dijkstra和贪心算法。 用状态转移方程描述发出的车数: ...原创 2020-01-05 12:20:24 · 762 阅读 · 0 评论 -
1030 Travel Plan (30分)
//dfs #include<cstdio> #include<algorithm> #include<list> using namespace std; bool visited[500]; int pre[500]; //从哪个城市来 int cityNum, pathNum, start, dest; int inf = 0x7fffffff; int ...原创 2020-01-08 00:23:09 · 79 阅读 · 0 评论