• HDU 2844 Coins【多重背包】


    大意:

    有n种物品

    告诉你每种物品的价值和数量

    问你能拼凑出1--m之内的多少个数

    分析:

    多重背包

    代码:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 using namespace std;
     5 
     6 const int maxn = 100005;
     7 int dp[maxn];
     8 int num[maxn], va[maxn];
     9 int vo[maxn];
    10 int n, m;
    11 int tot;
    12 
    13 int solve() {
    14     int cnt = 0;
    15     memset(dp, 0, sizeof(dp));
    16     for(int i = 1; i < tot; i++) {
    17         for(int j = m; j >= vo[i]; j--) {
    18             dp[j] = max(dp[j], dp[j - vo[i]] + vo[i]);
    19         }
    20     }
    21     for(int i = 1; i <= m; i++) {
    22         if(dp[i] == i) cnt++;
    23     }
    24     return cnt;
    25 }
    26 
    27 int main() {
    28     while(scanf("%d %d",&n, &m) && ( n + m ) ) {
    29         for(int i = 1; i <= n; i++) {
    30             scanf("%d",&va[i]);
    31         }
    32         for(int i = 1; i <= n; i++) {
    33             scanf("%d",&num[i]);
    34         }
    35         tot = 1;
    36         for(int i = 1; i <= n; i++) {
    37             for(int k = 1; k <= num[i]; k *= 2) {
    38                 vo[tot++] = k * va[i];
    39                 num[i] -= k;
    40             }
    41             if(num[i]) vo[tot++] = num[i] * va[i];
    42         }
    43         printf("%d
    ",solve());
    44     }
    45     return 0;
    46 }
    View Code
  • 相关阅读:
    转载-WebSocket协议解析
    django sqlite3数据迁入postgresql
    使用JenKins实现自动执行python脚本
    调用函数的局部变量
    打开新窗口获取元素
    邮箱登录脚本
    购物车小程序
    循环
    格式化的输出
    使用#号输出图形,可以指定宽和高
  • 原文地址:https://www.cnblogs.com/zhanzhao/p/3942757.html
Copyright © 2020-2023  润新知