大概是我寫出的第二題DP吧XDD
第一題是d652 前天寫出來的
或許這在大家眼裡都是水題XDDD
不過我決定紀錄一下(#
這是一個沒有寫過普通背包就寫有無限有限背包問題的故事(#
總之開一個當容量為多少的時候最大飽足感的陣列
然後對於每種食物去跑一次每種容量再跑一圈每種數量(工弎洨
然後如果是無限的飼料就跑到容量用完就好(?
算了我還是直接上code好了=w=
表達能力真的有點((((
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include<bits/stdc++.h> using namespace std; int n,c,v[1004],w[1004],t[1004],cs[1004]; int dp(){ cs[0]=0; for(int i=1;i<=n;i++){ for(int j=c;j>=w[i];j--){ for(int k=0;j-w[i]*k>=0 && (k<=t[i] || t[i]==-1);k++){ cs[j] = max(cs[j], cs[j-w[i]*k]+v[i]*k); } } } return cs[c]; } int main(){ cin>>n>>c; for(int i=1;i<=n;i++){ cin>>v[i]>>w[i]>>t[i]; } cout<<dp()<<endl; } |
發現出乎意料的短(?
作者已經移除這則留言。
回覆刪除Jizz
回覆刪除jizz
刪除