Luogu P1833 混合揹包 櫻花

2022-06-06 06:45:12 字數 636 閱讀 8959

p1833

根據題意,可以發現這是乙個揹包模型。但是它和01揹包、完全揹包不同之處在於有些樹的選取有次數限制,有的卻沒有。

乙個很容易想到的思路就是直接暴力地把所有\(p_i\)次限制的樹視為01揹包,外加一維選取個數的迴圈。剩下無限制的物品直接用完全揹包來做。

這個思路很好實現,看上去也是非常完美。但是由於資料的構造,事實上會超時。

正解是二進位制拆分,可是沒學過啊,怎麼辦?

考慮乙個玄學優化,如果說某棵樹被選了\(p_i\)次後已經超過時間限制,那麼事實上是無論如何也不會選完的。所以說此時我們可以將其視為完全揹包,也就是說可以減少一維迴圈。

那麼時間複雜度就得到了優化……至於優化了多少就要看資料給不給面子了……

當然運氣很好的是這題可以過

#include#includeusing namespace std;

int ts,te,n,dp[1005],t[10005],c[10005],p[10005];

int main()

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

else

}printf("%d",dp[limit]);

return 0;

}

二進位制拆分的**將在後續更新

P1833 櫻花 揹包DP 多重揹包 , 混合揹包

混合揹包是指很多種揹包一起做。此題屬於多重揹包的模板題 思想是統統轉化為01揹包 題目中有01揹包 p 1 完全揹包 p 0 多重哦揹包 p k 完全揹包,只需將p t w 多重揹包,只需進行二進位制拆分 注意陣列開大 int readint while ch 0 ch 9 return x f l...

混合揹包 洛谷P1833 櫻花

愛與愁大神後院裡種了n棵櫻花樹,每棵都有美學值ci。愛與愁大神在每天上學前都會來賞花。愛與愁大神可是生物學霸,他懂得如何欣賞櫻花 一種櫻花樹看一遍過,一種櫻花樹最多看ai遍,一種櫻花樹可以看無數遍。但是看每棵櫻花樹都有一定的時間ti。愛與愁大神離去上學的時間只剩下一小會兒了。求解看哪幾棵櫻花樹能使美...

混合揹包 分組揹包

啥是混合揹包呢,就是包含01揹包,完全揹包,多重揹包。有n件物品,揹包承重最大為m,w i 代表重量,v i 代表價值,s i 代表種類。s i 1,可用1次,s i 0,可用無限次,s i 0,可用s i 次.解法 見 const int maxn 1e4 5 int n,m,dp m 1 w n...