poj 1062 昂貴的聘禮 dijkstra

2021-06-20 07:25:44 字數 633 閱讀 7346

關鍵1是把轉為一張圖,有向圖,可以換,就為一條邊,最後加上點的權重比較大小即可。

關鍵2是題意的理解上,主要的等級限制,酋長肯定要在區間內,(有等級比酋長還高的),列舉大小為m的區間,從酋長最大,到酋長最小(等級),在每個區間內的點用dijkstra,取最小的乙個即可。

#include#include#includeusing namespace std;

// 等級,每個頂點,

int level[102];int prize[102];int a[102][102]; bool canbuy[102];int d[102];bool flag[102];

void dijkstra(int n,int low,int lim)

{ bool mark=1;

while(mark)

{int cur;mark=0;

int mind=0x3f3f3f3f;

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

{if(level[i]>=low&&level[i]<=low+lim&&canbuy[i]==0&&flag[i]==0&&d[i]=low&&level[i]<=low+lim&&flag[i]==0&&canbuy[i]==0&&a[cur][i]+d[cur]

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