poj 1062 昂貴的聘禮 解題報告

2022-06-10 14:57:07 字數 1026 閱讀 5579

這一題只要想到如何建圖,就不太難解決了。假設對於編號為 i 的物品,如果它得到物品 j 後**從 pricei 降低到 pricej 的話,就用乙個cost[i][j] = pricej。也就是從物品 i 到物品 j 連一條有向邊。每乙個編號的物品都這樣處理,然後套用dijk 演算法,求出從每個點出發的最短路,最終最小的那個就是答案。考慮到等級限制,別人可以跟酋長接觸的前提是這個人的等級在 [ level 酋長-m  ~ level酋長+m ] 範圍內。

這題可以算得上比較靈活的 最短路。

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

using

namespace

std;67

const

int inf =1e9;

8const

int n = 100 + 10;9

intdist[n], vis[n];

10int

level[n], cost[n][n];

11int

n, m;

1213

int dijkstra(int cost[n], int

p)14

28 vis[u] = 1;29

for (int j = 0; j <= n; j++)

3034}35

return dist[1

];36}37

38int

main()

3949

for (int i = 1; i <= n; i++)

5059}60

int ans =inf;

61for (int i = level[1]-m; i <= level[1]; i++)

62 ans =min(ans, dijkstra(cost, i));

63 printf("

%d\n

", ans);64}

65return0;

66 }

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...