一道有兩個極限資源的動態規劃例題

2021-08-15 15:49:27 字數 949 閱讀 3041

題目描述 description

某天,妮妮在街上閒逛。他在超市裡看到**廣告:商品大降價。於是他很高興地拿著籃子購物去了。

已知商場內有n中商品。每種商品的重量為w千克,**為v,價值為t。此種商品有h件。

注意:此商場有乙個奇怪的規定。每種物品要麼不買,要麼買1件或h件。妮妮帶了y元。妮妮最多能扛x千克的物品。請幫妮妮求出他最多能獲得的價值。(不允許搶劫)

輸入描述 input description

輸入的第一行有3個用空格隔開的整數n、x和y。 接下來的n行,每行有4個資料,分別為w,v,t和h。

輸出描述 output description

輸出共一行,表示妮妮最多能獲得的價值。

樣例輸入 sample input

2 8 10

5 3 7 1

3 7 10 1

樣例輸出 sample output

資料範圍及提示 data size & hint

100%的資料滿足:0<=n<=300,0<=x<=100,0<=y<=100,0<=h<=10

這題的思路就是用動態規劃的思想解決問題,有兩個極限資源:負重和剩餘的錢數。

#include #define m 302

int main(void)

; //goods陣列用來接收商品的資訊

int dp[101][101]=; //行為負重,列為剩餘的錢數

int i=0,j=0,k=0;

int ww=0,vv=0,tt=0,hh=0; //用於接收每個商品的重量,**,價值和數目

scanf("%d %d %d",&n,&x,&y);

for(i=0;i=0;j--) //負重

}} printf("%d\n",dp[x][y]);

return 0;

}

一道簡單的動態規劃

這是一道usaco的題,section 3.4 raucous rockets 如果只有1張唱片,就是乙個揹包問題,現在有m張唱片,怎麼辦呢?dp i j k 表示前i首歌曲在j個cd中最後乙個cd時間為k的最大值 如果這首歌不選,就是dp i 1 j k 如果選,可以在當前時間就選,就是dp i ...

一道動態規劃水題的思考

最近感覺自己太菜了,想做一道水題找找自信,結果越發自卑qwq 洛谷p1002過河卒 這道題目的空間一維優化我居然看了半天才看懂 其實主要是那個作者沒有講清楚,讓我迷糊了半天,下面我來談談我對於這個狀態轉移方程的理解吧.對於沒有更新的狀態,它裡面存的值對應於二維陣列中 原作者的描述確實讓人看著有點迷q...

動態規劃的兩個經典問題

weight 原始物品陣列,values 為其所對應的價值,n 表示物品的個數,w 表示揹包所能承受的最大重量 public void knapsack3 int weight,int values,int n,int w states 0 0 0 if weight 0 w for int i 1...