首页 > 编程语言 >算法题总结-分组背包

算法题总结-分组背包

时间:2023-06-11 16:36:13浏览次数:47  
标签:背包 300 算法 分组 物品 1400 500

原题
有 N 件物品和一个容量为 V 的背包。第 i 件物品的费用是 Ci,价值是 Wi。这些
物品被划分为 K 组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包
可使这些物品的费用总和不超过背包容量,且价值总和最大。

由于截止目前,没有刷到对应的经典题目,以下以依赖背包的转化题目进行解析
https://www.cnblogs.com/dengliang356a/p/17473023.html
依赖背包的原始数据:

4500 12
100 3 0
400 5 0
300 5 0
1400 2 0
500 2 0
800 2 4
1400 5 4
300 5 0
1400 3 8
500 2 0
1800 4 0
440 5 10

分组以后的策略:

100:300
400:2000
300:1500
1400:2800    2200:4400    2800:9800    3600:11400
500:1000
300:1500    1700:5700
500:1000    940:3200
1800:7200

分组挑选策略:

F_optimize = collections.defaultdict(int)
for groupIndex in range(len(strategy)):
    for volume in range(n+1,0,-1):
        for item in strategy[groupIndex]:
            if (volume-item.price)<0:
                continue
            F_optimize[volume] = max(F_optimize[volume],F_optimize[volume-item.price]+item.satisfaction)
            pass
        pass
    pass
print(F_optimize[n])

标签:背包,300,算法,分组,物品,1400,500
From: https://www.cnblogs.com/dengliang356a/p/17473119.html

相关文章

  • 关于RL 和DRL中的算法总结
    其中:RL分为基于价值的学习和基于策略的学习和AC架构的价值学习DQNDQN=Q_learing+网络使用了价值网络q(..w)DQN训练的过程基础的DQN就是训练Q网络更新w参数代码中梯度下降用的是下面这一张这里有个问题下面这张图片中有不一样的地方即Gradientdescent......
  • 算法题总结-分组背包与依赖背包
    原题https://www.nowcoder.com/practice/f9c6f980eeec43ef85be20755ddbeaf4?tpId=37&tqId=21239&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3Fdifficulty%3D1%26page%3D1%26pageSize%3D50%26search%3D%26tpId%3D37%26type%3D37&am......
  • Django3中分组查询的一个坑
    最近在学习django的分组查询,发现使用通常的values加annotate方法,获取不到我想要的结果,后来通过查询官方文档得到答案一、问题描述1.1模型fromdjango.dbimportmodels#Createyourmodelshere.classGoods(models.Model):g_name=models.CharField(max_length=......
  • 算法学习day52动态规划part13-674、300、718
    packageLeetCode.DPpart13;/***674.最长连续递增序列*给定一个未经排序的整数数组,找到最长且连续递增的子序列,并返回该序列的长度。*连续递增的子序列可以由两个下标l和r(l<r)确定,*如果对于每个l<=i<r,都有nums[i]<nums[i+1],*那么子序列[nums[......
  • 算法学习day53动态规划part14-1143、53、1035
    packageLeetCode.DPpart14;/***1143.最长公共子序列*给定两个字符串text1和text2,返回这两个字符串的最长公共子序列的长度。*如果不存在公共子序列,返回0。*一个字符串的子序列是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些......
  • 或许是一个新的算法方向?
    动动发财的小手,点个赞吧!今日谷歌DeepMind使用深度强化学习发现更快的排序算法,相关论文成果已经发表在Nature上。据报道:该算法可以提速70%,相比之下,快了3倍之多。摘要排序或散列等基本算法在任何给定的一天都会被使用数万亿次。随着计算需求的增长,让这些算法尽可能高效变得至......
  • 算法——最短路径算法(dijkstra)
    source源端,target目的端1.构造n*n的相邻矩阵,-1表示未相邻intmatrix[n][n]intdist[n]初始化各节点直接到source的距离,dist[source]=0;boolvisited[n]是否访问过dist[source]=0;for(inti=0;i<n-1;i++){//找剩余n-1个节点的距离in......
  • 【三维装箱】基于自适应遗传算法的三维集装箱装载问题研究附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 一致性哈希算法——算法解决的核心问题是当slot数发生变化时,能够尽量少的移动数据
    一致性哈希算法摘自:http://blog.codinglabs.org/articles/consistent-hashing.html算法简述一致性哈希算法(ConsistentHashing)最早在论文《ConsistentHashingandRandomTrees:DistributedCachingProtocolsforRelievingHotSpotsontheWorldWideWeb》中被提出。简单来......
  • APS规则引擎算法
    要实现APS规则引擎算法,你可以使用C#中的规则引擎库,例如NRules或Drools.NET。以下是一个使用NRules库实现APS规则引擎算法的简单示例:首先,安装NRules库。你可以使用NuGet包管理器控制台运行以下命令来安装NRules:Install-PackageNRules创建规则类和模型类:publicclass......