SSL 2895 購買乾草(dp 揹包

2021-10-23 16:09:48 字數 894 閱讀 7678

約翰的乾草庫存已經告罄,他打算為奶牛們採購h(1≤h≤50000)磅乾草,他知道n(1≤n≤100)個乾草公司,現在用1到n給它們編號。

第i個公司賣的幹草包重量為pi(1≤pi≤5000)磅,需要的開銷為ci(l≤ci≤5000)美元.每個乾草公司的貨源都十分充足,可以賣出無限多的幹草包。

幫助約翰找到最小的開銷來滿足需要,即採購到至少h磅乾草。

第1行輸入n和h,之後n行每行輸入乙個pi和ci.

最小的開銷.

2153

253

9
可以無限多的幹草包,所以這題是完全揹包問題。

但是它的揹包容量(開銷)並沒有限制,而是求滿足條件的情況下最小的開支。

跟普通的完全揹包差不多,只是列舉容量時從1開始,直到滿足條件 (即採購到至少h磅乾草),才跳出迴圈。

i列舉n個個甘草,j列舉開銷,f[j]表示當開銷為j時前i個乾草能買到的最大的磅數。

1<=i<=n , 1<=j , f[j]=max(f[j],f[j-c[i]]+p[i])

#include

#include

#include

#include

using

namespace std;

long

long n,a[

5000

],s,ans=

1000000

,f[550000

],v,b[

5000];

voiddp(

)if(f[j]

>=v)}}

}voidin(

)int

main()

題目289 蘋果

ctest有n個蘋果,要將它放入容量為v的揹包。給出第i個蘋果的大小和價錢,求出能放入揹包的蘋果的總價錢最大值。有多組測試資料,每組測試資料第一行為2個正整數,分別代表蘋果的個數n和揹包的容量v,n v同時為0時結束測試,此時不輸出。接下來的n行,每行2個正整數,用空格隔開,分別代表蘋果的大小c和價...

289 生命遊戲

給定乙個包含 m n 個格仔的面板,每乙個格仔都可以看成是乙個細胞。每個細胞都具有乙個初始狀態 1 即為活細胞 live 或 0 即為死細胞 dead 每個細胞與其八個相鄰位置 水平,垂直,對角線 的細胞都遵循以下四條生存定律 如果活細胞周圍八個位置的活細胞數少於兩個,則該位置活細胞死亡 如果活細胞...

289 生命遊戲

四月份每日一題打卡 4月2日 題目描述 解題思路 在這裡插入 片 public void gameoflife int board int dy int rows board.length int cols board 0 length for int i 0 i rows i 如果周圍細胞數少於兩...