P1833 櫻花(二進位制優化揹包)

2022-06-18 02:18:10 字數 1101 閱讀 6788

《愛與愁的故事第四彈·plant》第一章。

愛與愁大神後院裡種了 nn 棵櫻花樹,每棵都有美學值 c_ici​。愛與愁大神在每天上學前都會來賞花。愛與愁大神可是生物學霸,他懂得如何欣賞櫻花:一種櫻花樹看一遍過,一種櫻花樹最多看 a_iai​遍,一種櫻花樹可以看無數遍。但是看每棵櫻花樹都有一定的時間 t_iti​。愛與愁大神離去上學的時間只剩下一小會兒了。求解看哪幾棵櫻花樹能使美學值最高且愛與愁大神能準時(或提早)去上學。

共 n+1n+1行:

第 11 行:現在時間 t_sts​(幾時:幾分),去上學的時間 t_ete​(幾時:幾分),愛與愁大神院子裡有幾棵櫻花樹 nn。這裡的 t_sts​,t_ete​格式為:hh:mm,其中 0 \leq hh \leq 230≤hh≤23,0 \leq mm \leq 590≤mm≤59,且 hh,mm,nhh,mm,n 均為正整數。

第 22 行到第 n+1n+1 行,每行三個正整數:看完第 ii 棵樹的耗費時間 t_iti​,第 ii 棵樹的美學值 c_ici​,看第 ii 棵樹的次數 p_ipi​(p_i=0pi​=0 表示無數次,p_ipi​是其他數字表示最多可看的次數 p_ipi​)。

只有乙個整數,表示最大美學值。

#includeusing

namespace

std;

const

int maxn=1e6+100

;int

n;int

dp[maxn];

inta[maxn];

intb[maxn];

intc[maxn];

int w[maxn];//

表示 int v[maxn];//

表示拆分後背包的容量

intmain ()

int tot=0

;

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

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

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

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

printf(

"%d\n

",dp[v]);

}

P1833 櫻花 混合揹包 二進位制優化板子

思路 首先比較容易想到是取和不取的揹包問題,其次發現裡面有完全揹包和多重揹包。所以樸素的做法就是當前物品是多重揹包時候,用多重揹包的解法,當前揹包是完全揹包時候,用完全揹包的解法。這樣會t兩個點。當然你開o2可以過,但是沒必要。include include include include incl...

混合揹包 洛谷P1833 櫻花

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

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

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