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