P1048 [NOIP2005 普及组] 采药
题目链接 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 return 0; 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 }