poj 1062 昂貴的聘禮

2021-08-15 05:14:04 字數 846 閱讀 7009

題目大意是說有n個物品,每個物品都有自己的**,但同時某些物品也可以由其他的(可能不止乙個)替代品,這些替代品的**比較「優惠」,問怎麼樣選取可以讓你的花費最少來購買到物品1

思路: 每個點都有乙個權值,之後讓你怎樣經過一系列操作讓第乙個物品的權值最小,我們可以設乙個0號節點,來存0-i這條路的權值,表示從0號物品到第i號物品的價值是v,之後i號物品可以交換的物品p的價值就是存p-i的這條路的權值,表示的時從p號物品換到第i號物品的價值是v,關於等級問題,我們可以列舉每乙個等級,找出所有符合他等級的點,我們進行最短路的時候值鬆弛這些符合他等級的點就好了。上**吧;

#include #include #include #include #define inf 999999

int map[111][111] , p[111] , dis[111] , vis[111],n,m;

using namespace std;

void dij()

//vis[1] = 0 ;

dis[0] = 0 ;

int min = inf , k;

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

}vis[k] = 1;

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

} }}

int main()

} int ans = inf + 10;

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

else

}dij();

ans = min(ans,dis[1]);

} printf("%d\n",ans);

}}

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