昂貴的聘禮 POJ 1062

2022-06-10 14:45:07 字數 872 閱讀 6702

原題鏈結

考察:最短路+列舉

錯誤思路:

列舉所有點作為起點,看所能更新到1點的最短路.返回的dist[1]即為答案.

此思路錯在等級處理.如果以pos[1]-m<=k<=pos[1]+m,那麼交易途中的最高點和最低點就無法更新.如果在交易途中更新最高點和最低點,那麼走錯路的時候就不能回溯

參考了大佬的正確思路:

設探險家起始點為0,他到達所有物品的距離就是所有物品的原始**.設pos[1] = k

同樣是列舉,但不是列舉所有點,而是列舉等級範圍,交易成功的等級範圍一定是在[k-m,k],[k-m+1,k+1],[k-m+2,k+2]....最後到[k,k+m]

每個都進行spfa演算法即可

1 #include 2 #include 3 #include 4 #include 5 #include 6

using

namespace

std;

7const

int n = 110; 8

int g[n][n],dist[n],m,n,mins = 0x3f3f3f3f

,h[n];

9bool

st[n];

10int spfa(int l,int

r)1129}

30}31return dist[1

];32}33

intmain()

34 50}

51for(int i=h[1]-m;i<=h[1];i++) mins = min(spfa(i,i+m),mins);

52 printf("

%d\n

",mins);

53return0;

54 }

poj 1062 昂貴的聘禮

這個題是乙個簡單的樹形dp,只是有乙個地位差限制,可以列舉可行區間,在可行區間裡進行dp.include include include include include include include include include include includeusing namespace st...

poj1062 昂貴的聘禮

做這題代價確實很昂貴,從昨天晚上一直到今天上午都在debug,今天上午提交還出現各種wa。比較明顯的最短路,有幾個地方要注意一下,首先建圖有個地方要注意以下,這題是用臨界矩陣儲存的有向圖,而且是由交換品指向購買品,然後將虛節點設為購買品的價值,最後列舉每乙個可能地位區間di求最短路,因為對於區間 c...

昂貴的聘禮(POJ1062)

這個玩了好久啊,是我第一次寫出這樣的最短路徑。還是參考了其它人的才出來,注意的有 1 是單向圖,2 把不滿足權值的提前全初始化。其實不用topo排序也可的。關鍵 void dfs int k include include include include include include includ...