• 2024-07-02背包DP——依赖背包
    依赖背包部分物品对其他物品有依赖性,即在拥有b前,必须拥有a;其本质是分组背包,不过具有特殊性,即依赖条件先来看简单依赖(存在b依赖a,但不存在c依赖b)在选择时,要么只选a,要么选a和依赖a的部分/全部解法,对每个选的集合分组,组内冲突(只能选一个),重新构造01背包的数据对于小依赖,直接枚举
  • 2024-07-02Godot游戏学习笔记(二)
    Godot学习笔记(二)前言今天这部分是想做一个基本的背包系统,既可以存放基本的物品。一、个人思路我认为的背包系统中主要有三项基本的物品、用于存放物品的单位和背包页面这三个部分,其中第二个部分用于存放物品的单位可以不用单独构建,但是构建了会更方便管理,所以我加上了第
  • 2024-07-01代码随想录算法训练营第四十三天 | 52.携带研究材料 518.零钱总和II 377.组合总和IV 70.爬楼梯
    完全背包有N件物品和一个最多能被重量为W的背包,第i间物品的重量为weights[i],价值为value[i],每件物品都有无限个,求解将哪些物品装入背包里,物品价值总和最大遍历顺序:纯完全背包问题(即求装满背包后的最大价值)先遍历背包先遍历物品都是可以的和零一背包求解的最大不同就是遍历顺序
  • 2024-06-23DP:01背包问题
    一、背包问题的概述背包问题是⼀种组合优化的NP完全问题。本质上是为了找出“带有限制条件的组合最优解”1、根据物品的个数,分为如下几类:•01背包问题:每个物品只有⼀个(重点掌握)•完全背包问题:每个物品有无限多个(重点掌握)•多重背包问题:每件物品最多有n个•混合背包
  • 2024-06-21B. Modulo Sum
    https://codeforces.com/contest/577/problem/B题意:给定长度为n个数组和一个m(1<=n<=1e6,2<=m<=1e3),其中n中的元素(1<=x<=1e9)。问n中是否有子序列的和可以被m整除,输出YES或NO。思路:维护一个集合,依此遍历数组元素,每次遍历将集合中的元素进行更新,更新过程中看是否有0
  • 2024-06-20多重背包&树上背包小结
    多重背包&树上背包多重背包有\(n\)种物品,每种物品有\(s_i\)个,价值为\(v_i\),体积为\(w_i\),背包容量为\(V\),问最大价值二进制拆分把\(s\)进行二进制拆分,然后就是01背包的过程,\(O(nV\logV)\)可以用bitset优化单调队列对于每个物品,先枚举\(k=0\simw_i-1\),然后枚
  • 2024-06-19代码随想录算法训练营第四十三天 | 完全背包理论基础、518.零钱兑换II、377. 组合总和 Ⅳ、70. 爬楼梯 (进阶)
    完全背包理论基础题目链接:https://kamacoder.com/problempage.php?pid=1052文档讲解:https://programmercarl.com/%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E7%90%86%E8%AE%BA%E5%9F…视频讲解:https://www.bilibili.com/video/BV1uK411o7c9/思路完全背包中,每个物品可以
  • 2024-06-18基础背包问题
    01背包有N种物品,第i种物品的体积是v[i],价值是w[i],每件物品最多只能选1件。有一个容量为V的背包,问将哪些物品装入背包,可使这些物品的总体积不超过背包,并且总价值最大,输出最大价值。#include<bits/stdc++.h>usingi64=longlong;voidsolve(){intN,V;std::cin
  • 2024-06-18代码随想录算法训练营第四十一天 | 0-1背包问题
    46.携带研究材料二维数组题目链接文章讲解视频讲解动态规划五部曲:dp[i][j]:下标i表示背包装0-i的物品(任取),j表示当前背包的最大容量,dp[i][j]表示容量为j时,装0-i的物品的最大价值递推公式:dp[i][j]=max(dp[i-1][j],dp[i-1][j-weight[i]]+value[i])dp[i-1][j]表示j
  • 2024-06-16Java编程:动态规划
    背包问题:有一个背包,容量为4磅,现有如下物品要求达到的目标为装入的背包的总价值最大,并且重量不超出要求装入的物品不能重复动态规划算法介绍===================================================================动态规划(DynamicProgramming)算法的核心思想是
  • 2024-06-14各种方法优化背包
    对应试题为HDU5887HerbsGathering(背包问题的剪枝技巧)_搜索剪枝在装满背包的前提下求最小的多余个数-CSDN博客  1:使用map进行优化#include<bits/stdc++.h>#definelllonglongusingnamespacestd;map<int,ll>mp,tmp;map<int,ll>::iteratorit;intmain(){ int
  • 2024-06-136.13模拟赛题解
    前面是题解,后面是垃圾话。T1P1541[NOIP2010提高组]乌龟棋没脑子直接设\(f_{p,i,j,k,w}\),为走到\(p\),还剩\(1,2,3,4\)牌各\(i,j,k,w\)张,\(9\cdot10^8\),发现到一个点只要三种牌的数量确定,最后一种也确定了,所以直接设\(f_{p,i,j,k}\)表示三种牌的就行,大力DP即可。T
  • 2024-06-13多重背包 单调队列优化
    https://www.acwing.com/problem/content/6/#include<iostream>#include<memory.h>#include<deque>#include<stdio.h>usingnamespacestd;/*https://www.acwing.com/problem/content/6/有N种物品和一个容量是V的背包。第i种物品最多有si件,每件体积是vi,
  • 2024-06-132024.6.10
    01背包问题详解01背包是一种动态规划问题。动态规划的核心就是状态转移方程,本文主要解释01背包状态转移方程的原理。问题描述01背包问题可描述为如下问题:有一个容量为V的背包,还有n个物体。现在忽略物体实际几何形状,我们认为只要背包的剩余容量大于等于物体体积,那就可以装进背包里
  • 2024-06-12【背包问题】基于matlab混合遗传算法求解背包问题(目标函数:总重 总价值)【含Matlab源码 4661期】
    ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
  • 2024-06-12DP经典问题----背包问题的代码实现(入门级)(C++/PYTHON)
    背包的状态转换方程i:表示物品序号j:表示背包大小W[i]:表示第i件物品的重量f[i,j]:表示在前i件物品中选择若干件放在承重为j的背包中,可以取得的最大价值f[i-1,j-Wi]:表示在前i-1件物品中选择若干件放在承重为j-Wi的背包中,可以取得的最大价值Pi(j>=Wi):表示第i件物品的价值,要
  • 2024-06-10【题解】 [CSP-J 2019] 纪念品
    题目描述题目大意在\(T\)天内,有\(n\)种纪念品和初始的\(m\)元。可以得到每天每种纪念品的价格。每一天可以以当日价格买卖纪念品。特别的,当天卖出得到的钱可以当天买入,当日买入的纪念品也可以当日卖出。当然可以一直持有。但是,\(T\)天过后,手上不可以持有纪念品。思路
  • 2024-06-09背包问题(多重背包与分组背包)
    多重背包问题与01背包的区别在于每个物品的个数有限制,且不一样。f[i,j]=max(f[i-1,j-v[i]*k]+w[i]*k,k为选择放进背包里的当前物品的个数)优化过程对比两个状态转移方程//其中s代表对于第i个物品而言限制的最大数量f[i,j]=max(f[i-1,j],f[i-1,j-v]+w,f[i-2,j-
  • 2024-06-0920240609训练
    商品打包(pack)题面:有\(n\)个商品,第\(i\)个商品的体积为\(a_i\),若干个质量为\(L\)的背包。令\(f_i\)为将第\(i\)个商品到第\(n\)个商品依次按如下的方式放入背包中所需要的最少背包数。将第\(k\)商品放入背包的方法为,如果当前背包剩余容量\(\gek\)那么放入,否则加入新背包。题
  • 2024-06-08打砖块 题解
    题目链接\(50pts\)对于没有\(Y\)砖的情况,可以用分组背包解决,算出每一列打\(j\)块砖需要的子弹以及对分数的贡献,按照分组背包即可。对于包含\(Y\)砖的情况,不能直接分组背包解决。这实际上是打的顺序问题,比如:NYNY如果手上有两枚子弹,最优策略是先打掉第二列,再打掉第
  • 2024-06-074. 多重背包问题 I
    https://www.acwing.com/problem/content/4/有N种物品和一个容量是V的背包。第i种物品最多有si件,每件体积是vi,价值是wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数
  • 2024-06-06codeforces 1442 D Codeforces Round 681 (Div. 1, based on VK Cup 2019-2020 - Final) D
    链接大意就是给你n组物品,这n组物品里面每组有\(t_i\)个,且他们是按照价值不降的顺序排列的。现在允许取k个物品,每个物品必须取在数组的开头处,每个物品在被取用后就会消失。问你最大能够拿到多少价值的物品。其中\(n,k\leq1500,\sumt_i\leq1e6,a_i\leq1e8\)很背包吧。可
  • 2024-06-06回退背包专题
    P4141消失之物题目意思,就是说有n个物品,然后每个物品都有自己的体积w[i],然后问你,如果第i个物品丢了之后,还能够装满这个背包的方法,然后遍历一遍i同时也要遍历一遍背包,因为背包的值是在1到m之间的任意值,对于同一个物品丢失,中间结果不需要用加空格隔开,就是连在一起题解:这是一
  • 2024-06-0509_分割等和子集
    416.分割等和子集题目难易:中等给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过100数组的大小不会超过200示例1:输入:[1,5,11,5]输出:true解释:数组可以分割成[1,5,5]和[11].
  • 2024-06-04代码随想录算法训练营第四十六天|动态规划:完全背包理论基础、518.零钱兑换II、377. 组合总和 Ⅳ
    动态规划:完全背包理论基础文档讲解:代码随想录题目链接:52.携带研究材料(第七期模拟笔试)完全背包有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总