幾道簡單揹包

2022-09-10 08:12:10 字數 2394 閱讀 4263

由於前幾天上課講了一道最大子段和o(n2)預處理,我想起來之前零零散散做的揹包,應該總結一下。

1. 採藥問題

題目描述

辰辰是個天資聰穎的孩子,他的夢想是成為世界上最偉大的醫師。為此,他想拜附近最有威望的醫師為師。

醫師為了判斷他的資質,給他出了乙個難題。醫師把他帶到乙個到處都是草藥的山洞裡對他說:「孩子,這個山洞裡有一些不同的草藥,採每一株都需要一些時間,每一株也有它自身的價值。

我會給你一段時間,在這段時間裡,你可以採到一些草藥。

如果你是乙個聰明的孩子,你應該可以讓採到的草藥的總價值最大。」

如果你是辰辰,你能完成這個任務嗎?

輸入格式

第一行有 22 個整數 t(1 < t < 10001)和 mm(1 < m < 1001),用乙個空格隔開,t 代表總共能夠用來採藥的時間,m 代表山洞裡的草藥的數目。

接下來的 m 行每行包括兩個在 11 到 100100 之間(包括 11 和 100100)的整數,分別表示採摘某株草藥的時間和這株草藥的價值。

輸出格式

輸出在規定的時間內可以採到的草藥的最大總價值。

輸入輸出樣例

輸入70 3

71 100

69 1

1 2輸出

3說明/提示

【資料範圍】

對於 30% 的資料,1 < m ≤ 10;

對於全部的資料,1 < m ≤ 100。

【題目**】

noip 2005 普及組第三題

這道題最有特點的地方在於怎麼揹包都可行,我們既可以把時間當成重量也可以把價值當成重量

#include#include#include#includeusing namespace std;

int m,w[100010],v[100010],t;

int dp[100010];

int main()

for(int i=1;i<=m;i++) }

printf("%d",dp[t]);

return 0;

}

2.貨幣系統

題目描述

在網友的國度中共有 n 種不同面額的貨幣,第 i 種貨幣的面額為 a[i],你可以假設每一種貨幣都有無窮多張。為了方便,我們把貨幣種數為 n、面額陣列為 a[1..n] 的貨幣系統記作 (n,a)。

在乙個完善的貨幣系統中,每乙個非負整數的金額 x 都應該可以被表示出,即對每乙個非負整數 x,都存在 n 個非負整數 t[i] 滿足 a[i]×t[i] 的和為 x。然而, 在網友的國度中,貨幣系統可能是不完善的,即可能存在金額 x 不能被該貨幣系統表示出。例如在貨幣系統 n=3, a=[2,5,9] 中,金額 1,3 就無法被表示出來。

兩個貨幣系統 (n,a) 和 (m,b) 是等價的,當且僅當對於任意非負整數 x,它要麼均可以被兩個貨幣系統表出,要麼不能被其中任何乙個表出。

現在網友們打算簡化一下貨幣系統。他們希望找到乙個貨幣系統 (m,b),滿足 (m,b) 與原來的貨幣系統 (n,a) 等價,且 m 盡可能的小。他們希望你來協助完成這個艱鉅的任務:找到最小的 m。

輸入格式

輸入檔案的第一行包含乙個整數 t,表示資料的組數。

接下來按照如下格式分別給出 t 組資料。 每組資料的第一行包含乙個正整數 n。接下來一行包含 n 個由空格隔開的正整數 a[i]。

輸出格式

輸出檔案共有 tt 行,對於每組資料,輸出一行乙個正整數,表示所有與 (n,a) 等價的貨幣系統 (m,b) 中,最小的 m。

輸入輸出樣例

輸入2

4 3 19 10 6

5 11 29 13 19 17

輸出2

5 說明/提示

在第一組資料中,貨幣系統 (2, [3,10]) 和給出的貨幣系統 (n,a) 等價,並可以驗證不存在 m < 2 的等價的貨幣系統,因此答案為 2。 在第二組資料中,可以驗證不存在 m < n 的等價的貨幣系統,因此答案為 5。

對於100% 的資料,滿足 1 ≤ t ≤ 20, n,a[i] ≥ 1。

當時糾結了好久為什麼倒序。其實也不算倒序,它本身正確性的證明用的是反證法,最卡我的是集合之間的邏輯關係

#include#include#include#include#includeusing namespace std;

int n,ans,f[100010],a[100010],t,x;

int main()

sort(a+1,a+n+1);

f[0]=1;

for(int i=1;i<=n;i++)

for(int j=a[i];j<=a[n];j++)

}printf("%d\n",ans);

} return 0;

}

簡單01揹包 完全揹包

01揹包問題 有n個重量和價值分別為wi,vi的物品。從這些物品中挑選出總重量不超過w的物品,求所有挑選方案中價值總和的最大值。1 n 100 1 wi,vi 100 1 w 10000 第一行輸入n的值 接下來n行輸入wi,vi 最後一行輸入w for example input 2 31 2 3...

揹包九講 簡單揹包

揹包問題是一種動態規劃演算法的衍生問題。它可以被看作一種獨立的題型,也可以看作是一種線性動態規劃。學好揹包 學會揹包,對於深入理解動態規劃演算法有著極大的好處,並能幫助理解一些更深層次的動態規劃問題。那麼就開始吧 題目型別 有 n 件物品和乙個容量為 v 的揹包。第 i 件物品的費體積是 v i 價...

簡單0 1揹包

第一次部落格求不噴不噴不噴!有乙個容量為v的揹包,要裝進n個物品,第i個物品的費用為ci,價值為wi,要怎樣選擇才可以使花費不超過揹包容量的同時包裡的總價值最大?每個物品只能放一次 當時剛接觸c 的我剛拿到題目就蒙逼了 如果乙個乙個列舉的話有很多種組合,想想心都累。所以就要利用動態規劃思想。什麼是動...