P1776 寶物篩選 題解

2021-10-10 00:16:36 字數 1357 閱讀 4897

同步

原題鏈結

簡要題意:多重揹包模板。

即給定 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.

如果你學過揹包九講演算法,這裡就顯得比板子還要板子了吧!

如果您沒有學過,可以去我的部落格搜尋一下,學習完了。

時間複雜度:o(n

log⁡gi

)\mathcal(n \log g_i)

o(nloggi

​).(這裡給出二進位制拆分的做法)

實際得分:100pt

s100pts

100pts

.

#pragma gcc optimize(2)

#include

using

namespace std;

const

int n=

1e5+1;

inline

intread()

int x=0;

while

(ch>=

'0'&& ch<=

'9') x=

(x<<3)

+(x<<1)

+ch-

'0',ch=

getchar()

;return x*f;

}inline

void

write

(int x)

if(x<10)

write

(x/10);

putchar

(char

(x%10

+'0'))

;}int n,v,cnt=0;

int v[n]

,w[n]

,f[n]

;int

main()

if(z) v[

++cnt]

=x*z,w[cnt]

=y*z;

}for

(int i=

1;i<=cnt;i++

)for

(int j=v;j>=w[i]

;j--

) f[j]

=max

(f[j]

,f[j-w[i]

]+v[i]);

write

(f[v]);

return0;

}

洛谷 P1776 寶物篩選題解

p1776 寶物篩選 題解思路 多重揹包模板。將第i種物品分成若干件物品,其中每件物品有乙個係數,這件物品的費用和價值均是原來的費用和價值乘以這個係數。例如,如果p i 為13,就將這種物品分成係數分別為1 2 4 6 的四件物品,則這四件物品的費用為kw i 價值為kv i k是物品的數目,而w ...

洛谷P1776 寶物篩選 題解 多重揹包

題目大意 這道題目是一道多重揹包的模板題。首先告訴你 n 件物品和揹包的容量 v 然後分別告訴你 n 件物品的價值 w 體積 c 以及數量 m 求解這個揹包能夠裝載的最大價值是多少?解題思路 直接套多重揹包的模板解決這個問題。注意這裡的多重揹包使用了二進位制優化。實現 如下 include usin...

洛谷P1776 寶物篩選

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