問題:
總共n中飲料,每種飲料表示為(s[i],v[i],c[i],h[i],b[i]),s表示名稱,v表示容量。c表示能夠買的最大數量,h表示愜意度,b表示實際購買量在v[i]*b[i]求和=v的情況下,h[i]*b[i]求和最大化
最優化。毫無疑問。考慮動態規劃跟貪心。
狀態轉移方程:
設opt(v』,i)表示從 i 到 n-1 種飲料中,ci 為第i種飲料可能的最大數量。算出總量為v』的方案中愜意度之和的最大值。
那麼遞迴式就應該是:
opt(v』,i)= max(k=0,1。2…,ci,i=0。1。2…,n-1)
這裡我認為須要說明給出的飲料組合終於能夠組合出v。
遞推:
int cal(int v, int t)
}} }
return opt[v][0];
}
記憶化搜尋:
int opt[v+1][t+1]; //初始化時opt中儲存值為-1,表示該子問題尚未被求解
int cal(int v, int type)
if(v < 0) return -inf;
if(v == 0) return 0;
else if(opt[v][type] != -1) return opt[v][type]; //該子問題已求解,則直接返回子問題的解
int ret = -inf; //子問題尚未求解,則求解該子問題
for(int i = 0; i <= c[type]; ++i)
} return opt[v][type] = ret;
}
程式設計之美 飲料供貨
題目大意 水房能容納飲料的總量是v,有一批飲料,每種飲料單個容量都是2的方冪,每種飲料資訊如下 si,vi,ci,hi 分別對應 名字,容量,滿意度 求在滿足總容量等於v的情況下,求滿意度的最大值。分析 1 動態規劃解法,不難看出這是一道完全揹包問題 具體思路解法見 第七章 揹包問題 完全揹包 2 ...
程式設計之美 飲料供貨
動態規劃解之 view code 1 2 總共n中飲料,每種飲料表示為 s i v i c i h i b i s表示名稱,v表示容量,c表示可能的最大容量,h表示滿意度,b表示實際購買量 3v i b i 求和 v的情況下,h i b i 求和最大化4 56 include 7using name...
買飲料難題
contest 多校訓練 985專場 problem e 985的買飲料難題 time limit 1 sec memory limit 128 mb submit 224 solved 118 submitstatusweb board description 天氣太熱了,985制定了對未來的規劃...