SDUT OJ[3109] 买买买 背包 dp
生活随笔
收集整理的這篇文章主要介紹了
SDUT OJ[3109] 买买买 背包 dp
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
好久沒(méi)做題了,今天來(lái)一發(fā)。
根據(jù)題意,可以推出狀態(tài)轉(zhuǎn)移方程:
dp[cost][weight] = max(dp[cost][weight], dp[cost-s[i].cost][weight-s[i].weight] + s[i].profit)
cost與weight可以互換
畢竟基礎(chǔ)差,看了許久,又在舍友的講解下才明白思路(o′?ェ?`o)
后來(lái)還因?yàn)閭€(gè)人細(xì)節(jié)沒(méi)注意到,WA了一次......
加注釋后的代碼如下(嘗試著優(yōu)化,結(jié)果效果相差不大 ?(。??)ノ ?書(shū)看得少),題目在文章后面給出
#include<iostream> // Required for max #include<cstring> // Required for memset #include<cstdio> // Required fro scanf,printf #define MAX 101 // 題目中最大數(shù)為100,所以數(shù)組下界為101// 存儲(chǔ)貨物的重量、進(jìn)價(jià)、盈利 struct {int weight, cost, profit; }s[MAX];// dp數(shù)組 int dp[MAX][MAX];int main() {int n, m, k;while(scanf("%d%d%d",&n,&m,&k) != EOF){// 對(duì)輸入的數(shù)據(jù)處理后存在結(jié)構(gòu)體中for(int z=0; z<k; z++){int w, u, v;scanf("%d%d%d",&w,&u,&v);s[z].weight = w;s[z].cost = u;s[z].profit = v-u;}// 初始化dp數(shù)組memset(dp, 0, sizeof(dp));// 狀態(tài)轉(zhuǎn)移方程 dp[cost][weight] = max(dp[cost][weight], dp[cost-s[i].cost][weight-s[i].weight] + s[i].profit)for(int cost=0; cost<=m; cost++)for(int weight=0; weight<=n; weight++){for(int i=0; i<k; i++){if(cost-s[i].cost>=0 && weight-s[i].weight>=0)dp[cost][weight] = std::max(dp[cost][weight], dp[cost-s[i].cost][weight-s[i].weight] + s[i].profit);}}printf("%d\n", dp[m][n]);}return 0; }
買買買
Time Limit: 1000ms?? Memory limit: 65536K??有疑問(wèn)?點(diǎn)這里^_^
題目描述
我飛最近開(kāi)始跑商了,比如從淄博往黃島販燒餅,從黃島往淄博販魷魚(yú)干。 當(dāng)然我飛壕還會(huì)販別的。 現(xiàn)在已知黃島有K種商品,每種商品重量為W,在黃島買價(jià)為U,在淄博賣價(jià)為V。 由于我飛經(jīng)常鍛煉身體強(qiáng)壯,每次都能扛總重量不超過(guò)N的貨物,現(xiàn)在我飛身上有錢M,請(qǐng)你幫我飛計(jì)算一下他這一次從黃島到淄博最多能賺多少錢,假設(shè)每種商品都有無(wú)窮多。所有的商品不可被分割,即若購(gòu)買必須購(gòu)買整件商品。輸入
多組數(shù)據(jù)。 對(duì)于每組數(shù)據(jù)的第一行有三個(gè)整數(shù)N,M,K(1 <= N,M,K <= 100)。 接下來(lái)的K行,每行三個(gè)整數(shù)W,U,V(1 <= W,U,V <= 100)。輸出
對(duì)于每組數(shù)據(jù)輸出一個(gè)整數(shù)代表我飛的最大收益。示例輸入
1 1 1 1 1 1示例輸出
0提示
來(lái)源
zmx轉(zhuǎn)載于:https://www.cnblogs.com/Genesis2018/p/9079828.html
總結(jié)
以上是生活随笔為你收集整理的SDUT OJ[3109] 买买买 背包 dp的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: nodejs express 加载htm
- 下一篇: 笔记本进水