• HDU2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活


    标准的多重背包应用,只要 看了 背包九讲应该就会做了的题目;

    用结构体做比较省事;

    这题比较蛋疼的是 中间把 数量打成重量,找了半天也找不出来,又看了几遍PO3还是没找出来...抱着奇怪的心里,搜了一下.我去...

    唉..以后要好好注意写代码的习惯了...

     1 #include<iostream>
     2 #define maxn 105
     3 #define max(a,b) (a>b?a:b)
     4 int dp[maxn];
     5 int n,m,t;
     6 struct node
     7 {
     8     int amount,weight,price;
     9 }game[maxn];
    10 void zeroOnePack(int cost,int weight)
    11 {
    12     for(int i=n;i>=cost;i--)
    13         dp[i]=max(dp[i],dp[i-cost]+weight);
    14 }
    15 void completePack(int cost ,int weight)
    16 {
    17     for(int i=cost;i<=n;i++)
    18         dp[i]=max(dp[i],dp[i-cost]+weight);
    19 }
    20 void multiPack(int cost,int weight,int amount)
    21 {
    22     
    23       if(cost * amount >= n)
    24         completePack(cost,weight);
    25      else
    26     {
    27         int k=1;
    28         while( k< amount)
    29         {
    30             zeroOnePack(k*cost,k*weight);
    31             amount-=k;
    32             k*=2;
    33         }
    34         zeroOnePack(amount*cost,amount*weight);
    35      }
    36 }
    37 
    38 int main()
    39 {
    40     //freopen("2191.txt","r",stdin);
    41     int i,j;
    42     while(~scanf("%d",&t))
    43     {
    44         while(t--)
    45         {
    46             memset(dp,0,sizeof(dp));
    47             memset(game,0,sizeof(game));
    48             scanf("%d %d" ,&n,&m);
    49                 for(i=0;i<m;i++)
    50                     scanf("%d %d %d",&game[i].price,&game[i].weight,&game[i].amount);
    51              for(i=0;i<m;i++)
    52                 multiPack(game[i].price,game[i].weight,game[i].amount);
    53              printf("%d
    ",dp[n]);
    54         }
    55     }
    56     return 0;
    57 }
  • 相关阅读:
    bug终结者 团队作业第二周
    dropdownlist绑定数据
    virtual与vmware
    后台控制输出table(有数据库)
    label 绑定数据
    flash不能显示中文
    dataset 多表查询
    MVC3 Razor视图引擎基础语法 [转]
    CreateAlias()与setFetchMode() [转 李丽芬]
    Linq Like [转 韩天伟]
  • 原文地址:https://www.cnblogs.com/xiaoniuniu/p/3887380.html
Copyright © 2020-2023  润新知