zoukankan      html  css  js  c++  java
  • P1757 通天之分组背包(分组背包)

    题目背景

    直达通天路·小 A 历险记第二篇

    题目描述

    自 0101 背包问世之后,小 A 对此深感兴趣。一天,小 A 去远游,却发现他的背包不同于 0101 背包,他的物品大致可分为 kk 组,每组中的物品相互冲突,现在,他想知道最大的利用价值是多少。

    输入格式

    两个数 m,nm,n,表示一共有 nn 件物品,总重量为 mm。

    接下来 nn 行,每行 33 个数 a_i,b_i,c_iai,bi,ci,表示物品的重量,利用价值,所属组数。

    输出格式

    一个数,最大的利用价值。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1010;
    int n,m;
    int dp[maxn][maxn];
    int c[maxn];
    int w[maxn];
    int b[maxn];
    vector<pair<int,int>> g[maxn];
    int main () {
        scanf("%d%d",&m,&n);
        for (int i=1;i<=n;i++) {
            scanf("%d%d%d",c+i,w+i,b+i);
            g[b[i]].push_back(make_pair(c[i],w[i])); 
        }
        for (int i=1;i<=1000;i++) {
            for (int j=0;j<g[i].size();j++) {
                for (int k=m;k>=g[i][j].first;k--)
                    dp[i][k]=max(dp[i][k],dp[i-1][k-g[i][j].first]+g[i][j].second);
            }
        }
        int ans=0;
        for (int i=1;i<=1000;i++)
            for (int j=0;j<=m;j++) ans=max(ans,dp[i][j]);
        printf("%d
    ",ans);
    }
  • 相关阅读:
    变量的解构赋值
    vue-progressbar 知识点
    <script>标签里的defer和async属性 区别(待补充)
    管理node.js版本的模块:n
    node 知识点
    让node支持es模块化(export、import)的方法
    jvm 知识点
    前端 术语
    js的严格模式
    commonJS、AMD、es模块化 区别(表格比较)
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/13453662.html
Copyright © 2011-2022 走看看