題目描述 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...