搜尋(2) 估值型剪枝

2021-07-15 23:08:13 字數 1739 閱讀 4447

總時間限制: 1000ms 記憶體限制: 65536kb

描述

「我是要成為海賊王的男人!」,路飛一邊喊著這樣的口號,一邊和他的夥伴們一起踏上了偉大航路的艱險歷程。

路飛他們偉大航路行程的起點是羅格鎮,終點是拉夫德魯(那裡藏匿著「唯一的大秘寶」——one piece)。而航程中間,則是各式各樣的島嶼。

因為偉大航路上的氣候十分異常,所以來往任意兩個島嶼之間的時間差別很大,從a島到b島可能需要1天,而從b島到a島則可能需要1年。當然,任意兩個島之間的航行時間雖然差別很大,但都是已知的。

現在假設路飛一行從羅格鎮(起點)出發,遍歷偉大航路中間所有的島嶼(但是已經經過的島嶼不能再次經過),最後到達拉夫德魯(終點)。假設他們在島上不作任何的停留,請問,他們最少需要花費多少時間才能到達終點?

輸入

輸入資料報含多行。

第一行包含乙個整數n(2 < n ≤ 16),代表偉大航路上一共有n個島嶼(包含起點的羅格鎮和終點的拉夫德魯)。其中,起點的編號為1,終點的編號為n。

之後的n行每一行包含n個整數,其中,第i(1 ≤ i ≤ n)行的第j(1 ≤ j ≤ n)個整數代表從第i個島嶼出發到第j個島嶼需要的時間t(0 < t < 10000)。第i行第i個整數為0。

輸出

輸出為乙個整數,代表路飛一行從起點遍歷所有中間島嶼(不重複)之後到達終點所需要的最少的時間。

樣例輸入

樣例輸入1:

4 0 10 20 999

5 0 90 30

99 50 0 10

999 1 2 0

樣例輸入2:

5 0 18 13 98 8

89 0 45 78 43

22 38 0 96 12

68 19 29 0 52

95 83 21 24 0

樣例輸出

樣例輸出1:

100樣例輸出2:

137從初始狀態到當前狀態的代價已經不小於目前找到的最優解,則剪枝

**一下從當前狀態到解的狀態至少要花的代價w(可以很粗略很樂觀,小於真實的最小代價),如果w加上到達當前狀態時已經花費的代價,必然不小於目前找到的最優解,則剪枝

如果到達某個狀態a時,發現前面曾經也到達過a,且前面那次到達a所花代價更少,則剪枝。這要求記錄到目前為止到達狀態a時所能取得的最小代價。· ·

狀態,由兩部分構成:

1)已經走過的城市(除最後乙個城市外,其他城市順序不重要)

2)走過的最後乙個城市 · ·

假設還有 c1,c2….n 這k個城市還沒有走到,則接下來一定要走k段兩個城市間的道路,且這k段路終點分別是c1,c2 … n

取終點為c1的路中最短的那條,再取終點為c2的路中最短的那條 …. 取終點為n的路中最短的那條。它們的長度之和,一定不大於把這k個城市都走到的最短路徑的長度。 · ·

除解狀態以外的狀態總數上限:14*2^14

可以用乙個的14*214二維陣列存放到達某個狀態的「目前為止最小代價」 · ·

從初始狀態到當前狀態的代價已經不小於目前找到的最優解,則剪枝

**一下從當前狀態到解的狀態至少要花的代價w,如果w加上到達當前狀態時已經花費的代價,必然不小於目前找到的最優解,則剪枝

如果到達某個狀態a時,發現前面曾經也到達過a,且前面那次到達a所花代價更少,則剪枝。這要求記錄到目前為止到達狀態a時所能取得的最小代價。

codevs 2144 砝碼稱重 2(搜尋 剪枝)

codevs 2144 砝碼稱重 2 題目描述 description 有n個砝碼,現在要稱乙個質量為m的物體,請問最少需要挑出幾個砝碼來稱?注意乙個砝碼最多只能挑一次 輸入描述 input description 第一行兩個整數n和m,接下來n行每行乙個整數表示每個砝碼的重量。輸出描述 outpu...

估值70億的美團,O2O賭局勝算幾成?

原文 美團網又融了7億美刀這麼一大筆錢,ceo王興短時間內不會為錢發愁了,但筆者認為,7億美元投資這肯定是與投資人對賭的乙個局,對美團來說,是乙個勝算未知的o2o賭局。美團網 又融了7億美刀這麼一大筆錢,ceo王興短時間內不會為錢發愁了,但筆者認為,7億美元投資這肯定是與投資人對賭的乙個局,對美團來...

估值 難點 解決方案及相關案例 原書第2版

估值 難點 解決方案及相關案例 原書第2版 基本資訊 原書名 the dark side of valuation valuing young,distressed,and complex businesses,2nd edition 譯者 李必龍 李羿 郭海 出版社 機械工業出版社 isbn 97...