poj1062昂貴的聘禮

2021-09-08 12:47:15 字數 989 閱讀 8706

這個題目我最開始看題目看了半天,看不懂。。

可是通過看例子及答案最終看懂了。

首先先解決等級的關係。

。假設等級越界。則不能交換。。所以原本等級的界限是

[rank[1]-m,rank[1]+m],可是這個邊界裡面會出現等級僅僅差大於m。所以等級的區間應該是

[rank[1]-m,rank[1]],[rank[1]-m+1,rank[1]+1]............等等。所以一直列舉到 [rank[1],rank[1]+m]..所以先通過列舉得到能夠交換的點。

。然後就是題目的意思了。

我理解的優惠相當於是分解。

。。比方假設得到1號物品須要得到2號物品和8000金幣。不就相當於1號到2號號為單向路勁,權值為8000.。

。求各個點到1號點的最短路加上這個點的價值。。

如圖所看到的。

1(10000)---------->2(1000)--------->4(50)

|              8000                  200    |

|--------------------->3(3000)----------|

5000                             200

繪圖之後一目了然。。。

然後運用dijkstra解決。

希望各位指正我的想法。。

**例如以下:

#include#include#define inf 0x3f3f3f3f

const int maxn=100+10;

int m,n;

int vis[maxn],dis[maxn],e[maxn][maxn];

int withtin[maxn],value[maxn],ranki[maxn];

int dijkstra()

}tmp=inf;

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

cost=dijkstra();

if(cost

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