第一篇ACM切题博客——最短路专题(HDU1)

做这些题花了过长的时间,提高效率是目前需要解决的重要问题。做一个勤学好问的孩子吧。

目录:【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]; 记录环的路径
                    }
                }}

10P1839 Delay ConstrainedMaximum Capacity Path

对与这种有限制的最短路,而且限制因素数据范围不小,应考虑二分。

11P3631 Shortest Path

看数据范围猜算法,这题是小变形的Floyed

12P3873 Invade the Mars

限制下的dijkstra
13P4063 Aircraft

暂时没完成。看了几遍网路上的AC代码,预处理得到图很关键(有点废话~~)。

 

你可能感兴趣的:(算法,action,Path,delay,lift)