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