luogu P1776 寶物篩選 多重揹包

2022-03-09 16:47:59 字數 921 閱讀 1455

題目描述

終於,破解了千年的難題。小 ff 找到了王室的寶物室,裡面堆滿了無數價值連城的寶物。

這下小 ff 可發財了,嘎嘎。但是這裡的寶物實在是太多了,小 ff 的採集車似乎裝不下那麼多寶物。看來小 ff 只能含淚捨棄其中的一部分寶物了。

小 ff 對洞穴裡的寶物進行了整理,他發現每樣寶物都有一件或者多件。他粗略估算了下每樣寶物的價值,之後開始了寶物篩選工作:小 ff 有乙個最大載重為 \(w\) 的採集車,洞穴裡總共有 \(n\) 種寶物,每種寶物的價值為 \(v_i\),重量為 \(w_i\) ,每種寶物有 \(m_i\) 件。小 ff 希望在採集車不超載的前提下,選擇一些寶物裝進採集車,使得它們的價值和最大。

輸入格式

第一行為乙個整數 \(n\) 和 \(w\),分別表示寶物種數和採集車的最大載重。

接下來 \(n\) 行每行三個整數 \(v_i,w_i,m_i\)​。

輸出格式

輸出僅乙個整數,表示在採集車不超載的情況下收集的寶物的最大價值。

#include #include #include using namespace std; 

const int n = 110 *32 ,m= 4e4+10;

int n,m;

int v[n],w[n],s[n],cnt;

int f[m];

int main()

if(c)v[++cnt]=c*a,w[cnt]=c*b;

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

for(int j=m;j>=w[i];j--)

f[j]=max(f[j-w[i]]+v[i],f[j]);

int ans=0;

for(int i=0;i<=m;i++)ans=max(ans,f[i]);

cout<}

洛谷P1776 寶物篩選

當年在tb桌前跪著聽懂了單調佇列優化多重揹包 然後那天下午codevs上的多重揹包一直過不去 現在codevs沒了,時間過得真快,有點心酸,當年bzoj也不知道,全在codevs上做題,好多 記錄都沒了。今天突然發現這題補掉,舒服了 includeusing namespace std const ...

P1776 寶物篩選 題解

同步 原題鏈結 簡要題意 多重揹包模板。即給定 n nn 個物品和乙個容積為 v vv 的揹包,每件物品有價值 v iv i vi 重量 w iw i wi 和個數 g ig i gi 求最大價值。n 1 05 n leq 10 5 n 105.如果你學過揹包九講演算法,這裡就顯得比板子還要板子了吧...

洛谷P1776 寶物篩選

題目描述 終於,破解了千年的難題。小 ff 找到了王室的寶物室,裡面堆滿了無數價值連城的寶物。這下小 ff 可發財了,嘎嘎。但是這裡的寶物實在是太多了,小 ff 的採集車似乎裝不下那麼多寶物。看來小 ff 只能含淚捨棄其中的一部分寶物了。小 ff 對洞穴裡的寶物進行了整理,他發現每樣寶物都有一件或者...