hdu5410(完全背包的依赖)

前端之家收集整理的这篇文章主要介绍了hdu5410(完全背包的依赖)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

http://acm.hdu.edu.cn/showproblem.php?pid=5410

完全背包的依赖,属于树形DP

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <iostream>
  4. #include <queue>
  5. #include <stack>
  6. using namespace std;
  7. #define N 1005
  8. #define INF 25000005
  9. int weight[N],price[N],r[N];
  10. int dp[N*2];
  11. int main(){
  12. int T;scanf("%d",&T);
  13. while(T--){
  14. memset(dp,sizeof(dp));
  15. int M,n;scanf("%d%d",&M,&n);
  16. int i,j;
  17. for(i=0;i<n;i++) scanf("%d%d%d",&price[i],&weight[i],&r[i]);
  18.  
  19. for(i=0;i<n;i++){
  20. for(j=M;j>=price[i];j--)
  21. dp[j]=max(dp[j],dp[j-price[i]]+weight[i]+r[i]);
  22. for(j=price[i];j<=M;j++)
  23. dp[j]=max(dp[j],dp[j-price[i]]+weight[i]);
  24. }
  25. printf("%d\n",dp[M]);
  26.  
  27. }//while
  28. return 0;
  29. }//main
  30.  

猜你在找的设计模式相关文章