1. 程式人生 > >【例題】【揹包動規】NKOJ1123 潛水員

【例題】【揹包動規】NKOJ1123 潛水員

NKOJ1123 潛水員
時間限制 : 10000 MS 空間限制 : 65536 KB

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

輸入格式
第一行有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個氣缸裡的氧和氮的容量及汽缸重量。

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

樣例輸入
5 60
5
3 36 120
10 25 129
5 50 250
1 45 130
4 20 119

樣例輸出
249

狀態:f[i][j]表示得到(大於等於)i升氧氣和j升氮氣,所需最小重量。
方程:f[i][j]=min{ f[i][j] , f[i-a[k]][j-b[k]]+w[k] }

#include<cstdio>
#include<iostream>
using namespace std;
const int need=1003;
const int inf=1e9;

int O[need],N[need],W[need];
int f[need][need];

int main()
{
    int O2,N2,n;scanf("%d%d%d",&O2,&N2,&n);
    for
(int i=0,j;i<=O2;i++) for(j=0;j<=N2;j++) f[i][j]=inf; f[0][0]=0; for(int i=1;i<=n;i++) { scanf("%d%d%d",&O[i],&N[i],&W[i]); } for(int k=1,i,j,t1,t2;k<=n;k++) { for(i=O2;i>=0;i--) { for(j=N2;j>=0;j--) { t1=i-O[k],t2=j-N[k]; if(t1<0) t1=0;//* if(t2<0) t2=0;//* f[i][j]=min(f[t1][t2]+W[k],f[i][j]); } } } printf("%d",f[O2][N2]); }

相關推薦

例題揹包NKOJ1123 潛水員

NKOJ1123 潛水員 時間限制 : 10000 MS 空間限制 : 65536 KB 問題描述 潛水員為了潛水要使用特殊的裝備。他有一個帶2種氣體的氣缸:一個為氧氣,一個為氮氣。讓潛水員

例題NKOJ 3686 最大子段和

NKOJ 3686 最大子段和 時間限制 : - MS 空間限制 : 65536 KB 問題描述 給你一個包含n個整數的序列,要求從中取出m個不相交的子段,要求這m個子段的和盡肯能大,輸出這個最大和。 例如,n=7,m=2, 序列如下:

例題最長上升子序列

最長上升子序列 有N個整數構成的序列,請找出其中長度最長的上升子序列的長度. 思路: 1、階段:從右到左依次討論每個數字。 2、狀態:f[i]表示從第i個數開始向右能夠得到的最長上升序列的長度

例題NKOJ 1548 路面修整

NKOJ 1548 路面修整 時間限制 : 10000 MS 空間限制 : 65536 KB 問題描述 FJ打算好好修一下農場中某條凹凸不平的土路。按奶牛們的要求,修好後的 路面高度

樹上codevs 1163訪問藝術館

不用 tdi blog 復雜度 要花 clas 利用 第一個 數量 題目描述 Description 皮爾是一個出了名的盜畫者,他經過數月的精心準備,打算到藝術館盜畫。藝術館的結構,每條走廊要麽分叉為二條走廊,要麽通向一個展覽室。皮爾知道每個展室裏藏畫的數量,並且他精確地測

洛谷P1164 小A點菜

題目連結:https://www.luogu.org/problemnew/show/P1164 題目: 題目背景 uim神犇拿到了uoi的ra(鐳牌)後,立刻拉著基友小A到了一家……餐館,很低端的那種。 uim指著牆上的價目表(太低階了沒有選單),說:“

洛谷P1060 開心的金明

連結:https://www.luogu.org/problemnew/show/1060 題目 題目描述 金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說:“你的房間需要購買哪些物品,怎麼佈置,你說了算

例題(最長XX子序列)NKOJ 1004 攔截導彈

NKOJ 1004 攔截導彈 時間限制 : 1000 MS 空間限制 : 65536 KB 問題描述 某國為了防禦敵國的導彈襲擊,發展出一種導彈攔截系統。但是這種導彈攔截系統有一個缺陷

2018百度之星資格賽 A 問卷調查 - 位運算&

blog 題目 相同 clas 方程 數組 cstring div col 題目地址:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=820&pid=1001 參考博客:在此感謝ht

例題 6-21 UVA - 506System Dependencies

ack ring names cnblogs name ret any fin || 【鏈接】 我是鏈接,點我呀:) 【題意】 在這裏輸入題意 【題解】 記錄每個物品它的依賴有哪些,以及它被哪些東西依賴就可以了。 顯式安裝的東西不能被隱式刪除刪掉(就是rem

例題 7-3 UVA - 10976Fractions Again?!

ror pro .sh ios things ref div spa math 【鏈接】 我是鏈接,點我呀:) 【題意】 在這裏輸入題意 【題解】 x>=y => \(\frac{1}{x}<=\frac{1}{y}\) => \(\

例題 8-2 UVA-1605Building for UN

sample require oca idea ngs space 相同 http promise 【鏈接】 我是鏈接,點我呀:) 【題意】 在這裏輸入題意 【題解】 兩層 然後n*n就夠了 第一層類似 aaa.. bbb.. ccc.. ... 第二次則變

例題 8-13 UVA - 11093Just Finish it up

its fin else 發現 include clas 題意 tps names 【鏈接】 我是鏈接,點我呀:) 【題意】 在這裏輸入題意 【題解】 尺取法。 假設現在取[l..r]這一段。 然後發現累加的和小於0了。 那麽方法只能是不走l..l+1這一段

電氣間隙和爬電距離如何確定

允許 註意 保持 試驗 內部 gpo 方法 查表 減少 1,確定電氣間隙步驟 確定工作電壓峰值和有效值; 確定設備的供電電壓和供電設施類別 ; 根據過電壓類別來確定進入設備的瞬態過電壓大小; 確定設備的汙染等級(一般設備為汙染等級2); 確定電氣間隙跨接的絕緣類型(功能絕

例題4-6 uva12412A Typical Homework (a.k.a Shi Xiong Bang Bang Mang)

mes spa new contest ber stat .net sta emp 【鏈接】 我是鏈接,點我呀:) 【題意】 在這裏輸入題意 【題解】 訓練編程的題。 原題中沒有除0的數據,所以別擔心你的代碼是因為除0錯了。 多半跟我一樣。 也是因為沒有+e

例題4-2 uva489Hangman Judge

【連結】 我是連結,點我呀:) 【題意】 在這裡輸入題意 【題解】 水題。 中間就贏了算贏。(重複說,算錯 【程式碼】 #include <bits/stdc++.h> using namespace std; int _round; string s1,s2; i

海亮集訓DAY12(三)揹包的補充二的補充——第k優解

專輯:海量集訓-動態規劃-揹包 分三次更新 對第三次更新的補充 對於上次的更新,由於我還沒將第k優解的演算法研究透,所以就暫時沒有寫,在這裡不上 揹包的第k優解 第k優解,顧名思義,就是讓我們求出一個揹包問題的第k優解

2018.10.18每天認真做一道數學(數論)題之BZOJ 1042 [HAOI2008] 硬幣購物揹包DP容斥原理

對於每個詢問,答案顯然為:S所有超過數量限制的方案數- c [ 1

codeforces 981E. Addition on Segments線段樹bitset 01揹包的妙用優化好題操作集區間的最大值能否構成

【連結】 http://codeforces.com/contest/981/problem/E 【題意】   給定q個區間加的操作,求出這q個操作的所有子集的所有最大值,在[1,n]的範圍內 【分析】   要知道一個數能否可由某個操作集得到,只要知道對於某個

2017ccpc final G - Alice’s Stamps HDU - 6249 dp01揹包變形取k個區間使得覆蓋範圍最大

【連結】 acm.hdu.edu.cn/showproblem.php?pid=6249 【題意】 給你m個區間,要求你選出k個區間,使得區間並的覆蓋範圍最大 1≤T≤100 1≤K≤M 1≤N,M≤2000 1≤Li≤Ri≤N 【思路】 一開始我們得出錯誤的dp轉移: