zoukankan      html  css  js  c++  java
  • 洛谷——P1757 通天之分组背包

    https://www.luogu.org/problem/show?pid=1757#sub

    题目背景

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

    题目描述

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

    输入输出格式

    输入格式:

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

    接下来n行,每行3个数ai,bi,ci,表示物品的重量,利用价值,所属组数

    输出格式:

    一个数,最大的利用价值

    输入输出样例

    输入样例#1:
    input: 45 4
            10 10 1
            10 5 1
            5 20 2
            50 400 2
    输出样例#1:
    output:30

    说明

    1<=m<=1000 1<=n<=1000 组数t<=100

    裸地分组背包

     1 #include <algorithm>
     2 #include <cstdio>
     3 
     4 using namespace std;
     5 
     6 int m,n,x,y,num,max_num;
     7 int a[10005],w[1015][1015],val[1015][1015];
     8 int f[10105];
     9 
    10 int main()
    11 {
    12     scanf("%d%d",&m,&n);
    13     for(int i=1;i<=n;i++)
    14     {
    15         scanf("%d%d%d",&x,&y,&num);
    16         max_num=max(max_num,num);
    17         a[num]++;
    18         w[num][a[num]]=x;
    19         val[num][a[num]]=y;
    20     }
    21     for(int i=1;i<=max_num;i++)
    22         for(int k=m;k>0;k--)
    23             for(int j=1;j<=a[i];j++)
    24             if(k-w[i][j]>=0)
    25             f[k]=max(f[k],f[k-w[i][j]]+val[i][j]);
    26     printf("%d",f[m]);
    27     return 0;
    28 }
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    ES6解构赋值
    ES6兼容
    ES6关键字
    ES6模板字符串
    Bootstrap面试题
    Javascript中类型转换的情况以及结果
    事件
    ES6 解构赋值
    ES6 基础(let const)
    数组与字符串常用方法
  • 原文地址:https://www.cnblogs.com/Shy-key/p/6730597.html
Copyright © 2011-2022 走看看