zoukankan      html  css  js  c++  java
  • hdu2191 珍惜现在

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

    DP,部分背包

     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 #define N 123
     5 
     6 int n, m;
     7 int dp[N], w[N], v[N], num[N];
     8 
     9 void pack01(int wi, int vi)
    10 {
    11     int j;
    12     for(j=m; j>=wi; j--)
    13     {
    14         if(dp[j-wi]+vi > dp[j])
    15         {
    16             dp[j] = dp[j-wi]+vi;
    17         }
    18     }
    19 }
    20 
    21 void pack(int wi, int vi)
    22 {
    23     int j;
    24     for(j=wi; j<=m; j++)
    25     {
    26         if(dp[j-wi]+vi > dp[j])
    27         {
    28             dp[j] = dp[j-wi]+vi;
    29         }
    30     }
    31 }
    32 
    33 int main()
    34 {
    35     int t, i, k;
    36     scanf("%d", &t);
    37     while(t-- && scanf("%d%d", &m, &n))
    38     {
    39         for(i=1; i<=n; i++)
    40         {
    41             scanf("%d%d%d", w+i, v+i, num+i);
    42         }
    43         memset(dp, 0, sizeof(dp));
    44         for(i=1; i<=n; i++)
    45         {
    46             if(w[i]*num[i] >= m)
    47             {
    48                 pack(w[i], v[i]);
    49                 continue;
    50             }
    51             for(k=1; k<num[i]; k<<=1)
    52             {
    53                 pack01(w[i]*k, v[i]*k);
    54                 num[i] -= k;
    55             }
    56             pack01(w[i]*num[i], v[i]*num[i]);
    57         }
    58         printf("%d\n", dp[m]);
    59     }
    60     return 0;
    61 }
  • 相关阅读:
    如何进行函数式编程
    HTML文本格式化
    非模态对话框的创建及注意事项
    中国第一代程序员列传
    野指针
    缓冲区溢出攻击
    windows全部启动项
    HTML 样式
    Volatile关键字
    HTML基本标签
  • 原文地址:https://www.cnblogs.com/yuan1991/p/hdu2191.html
Copyright © 2011-2022 走看看