先說80分**:最基本的混合揹包,判斷是完全,01,或是多重,再選擇。
1 #include2using
namespace
std;
3int a[10001],c[10001],t[10001],f[10010
],n,m;
4int
main()
513 m=(x2-x1)*60+y2-y1;
14 scanf("
%d",&n);
15for(int i=1;i<=n;i++)
16 scanf("
%d%d%d
",&a[i],&c[i],&t[i]);
17for(int i=1;i<=n;i++)
1824
else
2532}33
}34}35 printf("
%d\n
",f[m]);
36 }
再說100分**:把每個物品進行二進位制拆分,分成1,2,4,8,16,32,64 ,,,再把花費和價值乘以次數即可。
例如:某個物品可以用20次,那麼可以分成1 2 4 8 5;
ps:對於完全揹包,可以把次數定為乙個很大的數,如9999999;
具體見**:
1 #include2using
namespace
std;
3int a[10001],b[10001],c[10001],f[1000010
],n,m;
4int
x1,yy,x2,y2;
5int co[1000001],v[1000001
],top;
6void
aaa()723
}24}25
}26intmain()
2734 m=(x2-x1)*60+y2-yy;
35 scanf("
%d",&n);
36for(int i=1;i<=n;i++)
3741
aaa();
42for(int i=1;i<=top;i++)
43for(int j=m;j>=co[i];j--)
44 f[j]=max(f[j],f[j-co[i]]+v[i]);
45 printf("
%d\n
",f[m]);
46 }
希望能給大家帶來幫助!
混合揹包 洛谷P1833 櫻花
愛與愁大神後院裡種了n棵櫻花樹,每棵都有美學值ci。愛與愁大神在每天上學前都會來賞花。愛與愁大神可是生物學霸,他懂得如何欣賞櫻花 一種櫻花樹看一遍過,一種櫻花樹最多看ai遍,一種櫻花樹可以看無數遍。但是看每棵櫻花樹都有一定的時間ti。愛與愁大神離去上學的時間只剩下一小會兒了。求解看哪幾棵櫻花樹能使美...
題解 P1833 櫻花
有 n 棵櫻花,有三種 只能看一次 最多看 a i 遍 能無限看 看每棵櫻花都需要一定時間 t i 求從 t s 開始,到 t e 結束 時間 最多能看多少櫻花。混合揹包板子,01 揹包相當於 1 個物品的多重揹包,完全揹包相當於 inf 個物品的多重揹包,都用多重揹包即可。要二進位制拆分優化,注意...
P1833 櫻花(二進位制優化揹包)
愛與愁的故事第四彈 plant 第一章。愛與愁大神後院裡種了 nn 棵櫻花樹,每棵都有美學值 c ici 愛與愁大神在每天上學前都會來賞花。愛與愁大神可是生物學霸,他懂得如何欣賞櫻花 一種櫻花樹看一遍過,一種櫻花樹最多看 a iai 遍,一種櫻花樹可以看無數遍。但是看每棵櫻花樹都有一定的時間 t i...