做这些题花了过长的时间,提高效率是目前需要解决的重要问题。做一个勤学好问的孩子吧。
目录:【HDU】
1548 A strange lift ★
2544 最短路 ★
3790 最短路径问题 ★
2066 一个人的旅行 ★
2112 HDU Today★
1874 畅通工程续★
1217 Arbitrage
1245 Saving James Bond ★
1317 XYZZY ★
1535 Invitation Cards ★
1546 Idiomatic Phrases Game ★
2680 Choose the best route ★
2923 Einbahnstrasse★
3339 In Action ★
2224 The shortest path ★★
2807 The Shortest Path★★
1595 find the longest of the shortest★★
3986 Harry Potter and the Final Battle ★★
1599 find the mincost route ★
1839 Delay Constrained... ★★
3631 Shortest Path ★★
4114 Disney's FastPass ★★★(未完成)
3832 Earth Hour ★
3873 Invade the Mars ★★★
4063 Aircraft ★★★★(未完成)
此处只对一些有所新领悟的东东做个总结:
(1)P1245 Saving James Bond:
实型数据要随时注意精度;
(2)P1317 XYZZY:
用SPFA求最短路时,当有结点入队超过N(结点数)时,图中存在负环(题意是求长路,图中存在正环,这与最短路的负环性质相同),此时可通过数字合理放大退出循环而得到正解,这种情况下只会要求是否有可行解。
(3)P1535 Invitation Cards:
不难想出是逆反两次单源最短路。
(4)P3339 In Action:
在没看多清楚题意的情况下看了别人的思路分析,实在不应该,此题最短路+背包的解法应不难想到。
(5)P2224 The shortest path:
事实证明一开始就想到的dp是对的。
(6)P2807 The shortest path:
矩阵相乘,敲了两遍,第一遍不知道错哪了,就基本原思路又敲一遍,写代码太没风格了,容易出错。
(7)P1595 Find the longest of the Final Battle:
我脑子里从来没有放弃过的可以通过在求最短路时做一些次优结果的标记来一次性求出次短路的想法~the shortest of the second shortest可能可以,the longest of the shortest是行不通滴~~
(8)P3986 Harry Potter and the Final Battle:
吸取了(7)的教训。
(9)P1599 Find the mincost route:
如题,求最小环,不是很顺,贴一小段代码
for (i=1; i<=n; i++) for (j=1; j<=n; j++) dist[i][j]=map[i][j]; min=inf; //记录最小环 for (k=1; k<=n;k++) { for (i=1; i<k; i++) { if (map[k][i]<Max) for (j=i+1; j<k; j++) { if (map[j][k]<Max && dist[i][j]+map[k][i]+map[j][k]<min) { min=dist[i][j]+map[k][i]+map[j][k]; } } } for (i=1; i<=n; i++) for (j=1; j<=n; j++) { if (dist[i][j]>dist[i][k]+dist[k][j]) { dist[i][j]=dist[i][k]+dist[k][j]; //r[i][j]=r[k][j]; 记录环的路径 } }}
(10)P1839 Delay ConstrainedMaximum Capacity Path:
对与这种有限制的最短路,而且限制因素数据范围不小,应考虑二分。
(11)P3631 Shortest Path:
看数据范围猜算法,这题是小变形的Floyed。
(12)P3873 Invade the Mars:
限制下的dijkstra。
(13)P4063 Aircraft:
暂时没完成。看了几遍网路上的AC代码,预处理得到图很关键(有点废话~~)。