查看: 1547|回復: 0
打印 上一主題 下一主題

[HOJ] 9 - 大麥克的世界旅行

[複製鏈接]
  • TA的每日心情
    鬱悶
    2015-5-15 22:38
  • 簽到天數: 33 天

    [LV.5]常住居民I

    75

    主題

    302

    帖子

    766

    積分

    版主

    TFcis - 105 附設監工官

    Rank: 7Rank: 7Rank: 7

    積分
    766

    台南一中資訊社程式設計達人 - 2014

    跳轉到指定樓層
    樓主
    發表於 2014-11-25 16:06:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


    很明顯的它是一個


    單源最短路單向邊、有負邊、需判斷負還

    只不過這個最短路的計算方式是:路徑上所有數乘起來
    其實只要把它取log就會發現加法乘法是一家~

    (不過取log有時候會讓浮點誤差擴大 , 尤其原本都只有整數的時候)


    解1:
    用Bellman-Ford 求A~B的最短路再把+換*就行了~

    然後要小心點誤差
    一般 Bellman-Ford + double 爆下去會WA
    要開 long double 才會過
    另外一個方法是把權重全部先取log
    但其實取log個過程就可能會加大浮點誤差


    解2:
    Bellman-Ford 有點慢 , 改用SPFA (Bellman-Ford 的 佇列優化) (Label Correcting Algorithm)
    關於SPFA:nocow演算法筆記
    這題用了 SPFA 之後只要開 double 就會過,我沒深入研究原因,給有興趣的人自己想




    AC:http://hoj.twbbs.org/judge/judge/submission/25367
    CODE:

    購買主題 本主題需向作者支付 2 枚金幣 才能瀏覽
    <這是個人簽名欄位>
    回復

    使用道具 檢舉

    您需要登錄後才可以回帖 登入 | 加入我們

    本版積分規則

    快速回覆 返回頂部 返回列表