POJ 4118 開餐館 01揹包問題變式

2021-10-04 21:53:03 字數 730 閱讀 2497

poj 4118 開餐館 題目連線

思路

01揹包問題的變式

遍歷: i為考慮第 i 個店開不開

遍歷: j為只考慮前 j 個店對開第 i 個店的影響

陣列dp[ a ]:從前a個店挑選時的最大收益

兩種情況:mi 和mj 的距離

1.不大於k:dp[ i ](j)=dp[ i ](j-1)

2.大於k:比較下面兩種選更大的(不考慮 j 與 i 之間的店)

(1)不開店 i :dp[ i ](j)不變

(2)開店 i :dp[ i ](j)=dp[ j ]+ p[ i ]

注意:遍歷的時候 j 的順序無所謂,因為每次迴圈 j 只更新 dp[ i ]乙個資料

注意:dp[ i ]的初始值要設為p[ i ]

備註

直接使用滾動陣列的時候理解起來比較抽象,先用二位陣列理解題意再改寫成滾動陣列更容易理解

#include

using

namespace std;

intmain()

for(i=

1;i<=n;i++)}

sort

(dp+

1,dp+n+1)

;printf

("%d\n"

,dp[n]);

}return0;

}

18 06 30 POJ 百練4118 開餐館

描述 北大資訊學院的同學小明畢業之後打算創業開餐館.現在共有n 個地點可供選擇。小明打算從中選擇合適的位置開設一些餐館。這 n 個地點排列在同一條直線上。我們用乙個整數序列m1,m2,mn 來表示他們的相對位置。由於地段關係,開餐館的利潤會有所不同。我們用pi 表示在mi 處開餐館的利潤。為了避免自...

POJ1276 多重揹包(01揹包 完全揹包)

多重揹包模板題,給定揹包容量 v 給定 n 種物品,每種物品的個數 n i 體積 v i 和重量 w i 已知,求揹包能裝下的物品的最大重量。對應本題就是,給定提款的金額cash,給定 n 種錢幣,每種錢幣的個數為 n i 面額 d i 已知,求能兌換的錢幣的最大值。本題中,體積和重量都等於面額。7...

dp揹包之01揹包poj2184

題意 給定兩個屬性,求這兩個屬性的和的最大值.思路 將第乙個屬性往後平移1000個單位,然後推導其動態轉移方程,若是dp i 代表當加入第乙個屬性加到i時,符合題意的第二個屬性的最大值.題意是兩個屬性的和的最大值,那麼動態轉移方程必然不是dp j max dp j dp j s i 0 s i 1 ...