日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ssl2290-潜水员【dp之二维费用】

發布時間:2023/12/3 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ssl2290-潜水员【dp之二维费用】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

其實這是一道例題,但確實是我做過最難(其他的水到炸)的一道二維費用


Description
潛水員為了潛水要使用特殊的裝備。他有一個帶2種氣體的氣缸:一個為氧氣,一個為氮氣。讓潛水員下潛的深度需要各種的數量的氧和氮。潛水員有一定數量的氣缸。每個氣缸都有重量和氣體容量。潛水員為了完成他的工作需要特定數量的氧和氮。他完成工作所需氣缸的總重的最低限度的是多少?
例如:潛水員有5個氣缸。每行三個數字為:氧,氮的(升)量和氣缸的重量:
3 36 120
10 25 129
5 50 250
1 45 130
4 20 119
如果潛水員需要5升的氧和60升的氮則總重最小為249 (1,2或者4,5號氣缸)。
你的任務就是計算潛水員為了完成他的工作需要的氣缸的重量的最低值。


Input
從文本文件gas.in中讀入數據。
第一行有2整數t,a(1<=t<=21,1<=a<=79)。它們表示氧,氮各自需要的量。
第二行為整數n (1<=n<=1000)表示氣缸的個數。
此后的n行,每行包括ti,ai,wi(1<=ti<=21,1<=ai<=79,1<=wi<=800)3整數。這些各自是:第i個氣缸里的氧和氮的容量及汽缸重量。

Output

僅一行包含一個整數,為潛水員完成工作所需的氣缸的重量總和的最低值。

Sample Input
5 60
5
3 36 120
10 25 129
5 50 250
1 45 130
4 20 119

Sample Output
249

解題思路

? 因為這里是求最小值,所以這里我就反推吧。emmmmmmmmmmmmmm?


代碼

#include<cstdio> #include<iostream> using namespace std; int v,u,n,vh[1001],uh[1001],w[1001]; int f[101][101]; int main() {memset(f,127,sizeof(f));f[0][0]=0;scanf("%d%d%d",&v,&u,&n);for (int i=1;i<=n;i++) scanf("%d%d%d",&vh[i],&uh[i],&w[i]);//輸入for (int i=1;i<=n;i++)for (int j=v;j>=0;j--)for (int k=u;k>=0;k--)//循環兩個費用{int t1=j+vh[i],t2=k+uh[i];//反推if (t1>v) t1=v;//避免過大if (t2>u) t2=u;//避免過大f[t1][t2]=min(f[t1][t2],f[j][k]+w[i]);//求最小值}printf("%d",f[v][u]); }

總結

以上是生活随笔為你收集整理的ssl2290-潜水员【dp之二维费用】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。