P1048 [NOIP2005 普及組] 採藥
阿新 • • 發佈:2022-04-09
題目連結 https://www.luogu.com.cn/problem/P1048
本來想找一個揹包的題目試一下,我也真是沒想到它這麼水.....
這跟01揹包不能說是類似,只能說是一模一樣。換一個變數名稱的事兒。。。。。
放AC程式碼
二維:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 int T,M; 6 int t[110],v[110],dp[110][1010]; 7 cin>>T>>M; 8 for(int i=1;i<=M;i++)9 cin>>t[i]>>v[i]; 10 for(int i=1;i<=M;i++) 11 { 12 for(int j=0;j<=T;j++) 13 { 14 if(j<t[i]) dp[i][j]=dp[i-1][j]; 15 else dp[i][j]=max(dp[i-1][j],dp[i-1][j-t[i]]+v[i]); 16 } 17 } 18 cout<<dp[M][T]; 19 return0; 20 }
一維:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int T,M; 4 int t[110],v[110],dp[1010]; 5 int main() 6 { 7 cin>>T>>M; 8 for(int i=1;i<=M;i++) 9 cin>>t[i]>>v[i]; 10 for(int i=1;i<=M;i++) 11 { 12 for(int j=T;j>=0;j--)13 { 14 if(j>=t[i]) 15 dp[j]=max(dp[j],dp[j-t[i]]+v[i]); 16 } 17 } 18 cout<<dp[T]; 19 return 0; 20 }