蒜頭君的購物袋2

2021-09-01 23:18:07 字數 843 閱讀 7394

蒜頭君去超市購物,他有乙隻容量為 vv 的購物袋,同時他想買 nn 件物品,已知每件物品的體積 v_ivi​ 和重要度 p_ipi​。蒜頭君想知道,挑選哪些物品放入購物袋中,可以使得買到的物品重要度之和最大,且物品體積和不超過購物袋的容量。

輸入格式

第一行輸入兩個整數 vv(1 \leq v \leq 10001≤v≤1000)和 nn(1 \leq n \leq 1001≤n≤100)。代表購物袋的總體積為 vv,蒜頭君一共想買 nn 件物品。

接下來輸入 nn 行,每行輸入兩個整數 v_ivi​ 和 p_ipi​(1 \leq v_i, p_i \leq 1001≤vi​,pi​≤100),分別表示每件物品的體積和重要度。

輸出格式

輸出一行,輸出乙個整數,表示蒜頭君能買到物品的最大重要度之和。

核心方程:dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+p[i])

其實理解了也比較簡單,dp[n][v]表示前n個物品中(同乙個物品不能重複拿),在不超過容量v的前提下,所取的最大重要度的值。

#include

#include

using namespace std;

int dp[

101]

[1001];

//dp[n][v]表示在前n個物品中買東西,在總容量不超過v的前提下,所取的最大重要度的值

int v[

101]

,p[101];

intmain()

} cout<[v]

//give me five

}

蒜頭君的購物袋1

蒜頭君去超市購物,他有乙隻容量為 v 的購物袋,同時他買了 n 件物品,已知每件物品的體積 vi。蒜頭君想知道,挑選哪些物品放入購物袋中,可以使袋子剩餘的空間最小。輸入格式 第一行輸入乙個整數 v 1 v 20,000 表示購物袋的容量。第二行輸入乙個整數 n 01 n 30 表示蒜頭君購買的 n ...

蒜頭君的購物袋3

蒜頭君去超市購物,他有乙隻容量為 v 的購物袋,同時他想買 n 種物品,已知每種物品的體積 vi和重要度 pi 蒜頭君想知道,怎麼挑選物品放入購物袋中,可以使得買到的物品重要度之和最大,且物品體積和不超過購物袋的容量。注意超市中每種物品的數量無限多。輸入格式 第一行輸入兩個整數 n,v 1 n 1,...

計蒜客 蒜頭君的購物袋2

問題描述 蒜頭君去超市購物,他有乙隻容量為 v 的購物袋,同時他想買 n 件物品,已知每件物品的體積 vi和重要度 pi。蒜頭君想知道,挑選哪些物品放入購物袋中,可以使得買到的物品重要度之和最大,且物品體積和不超過購物袋的容量。輸入格式 第一行輸入兩個整數 v 1 v 1000 和 n 1 n 10...