T1打包 一个二维01背包的板子,状态转移方程$$Dp_{j,k}=max\left \{Dp_{j,k},Dp_{j-Weight_i,k-V_i}+Value_i\right \}$$ T2暗黑破坏神 大概类似于分组背包,开$long\ long$,在更新$Dp$的过程中记录路径,递归输出即可。 ...
分类:
其他好文 时间:
2021-06-11 18:06:14
阅读次数:
0
微信公众号:Jerry的算法和NLP|背包问题主要分为以下几类0/1背包问题完全背包问题多重背包问题多重背包问题的优化混合背包问题二维背包问题分组背包问题有依赖的背包问题背景首先说下背包问题的背景背包问题一般都是主要会提供这个背包的容量V然后给出一系列的物品物品主要以下几个属性价值V体积W物品个数S然后求在这么多物品中求出在背包容量下能够放置物品的最大价值首先先定义一个DP数组DP[i][j]i—
分类:
其他好文 时间:
2020-12-19 13:29:18
阅读次数:
2
#include using namespace std; const int N=100+10; //二维代价的背包问题,就是dpi,j,k 太大了,用滚动数组 //注意滚动数组倒着遍历j int n,dp[N][N]={0},w[N],m[N],v[N],V,M; int main() { ci... ...
分类:
其他好文 时间:
2020-06-06 21:52:58
阅读次数:
61
*传送 这道题就是二维背包加输出具体方案,二维就可以直接在一维背包上多加一维,循环的时候多套一层就ok了。至于记录方案我们可以发现,每一种状态都是由上一种状态转移过来的。我们用ans[][]表示状态,则有ans[j][k]=ans[j-a[i]][k-b[i]]+char(i);最后输出ans[m] ...
分类:
其他好文 时间:
2020-03-08 19:45:34
阅读次数:
45
二维背包,不是很难。 看第二个样例时想到,既然吃掉了每一个城堡的某一个人的分,那么所有比那个人派遣兵力小的都可以吃掉,所以就想到了用一维存城堡,二维存第几个玩家的兵力。 所以输入就是a[j][i];输完之后为了便于比较有多少个玩家派遣的兵力小于目前吃掉的,就要排一个序,因为兵力会比较多,所以答案的第 ...
分类:
其他好文 时间:
2019-08-19 14:35:05
阅读次数:
67
口胡一种别的解法: 三重退背包,g1[j]k]表示不选x的选了j件物品,体积为k的方案数,g[0][0] = 1 , g1[j][k]=dp[j][k]-g1[j-1][k-a[x]] 然后按这样再退三层,最后看g3[10][87]的方案数是否非0即可,这样复杂度是O(50*50*50*10*87) ...
分类:
其他好文 时间:
2019-07-13 12:02:27
阅读次数:
185
/* 给定辩控双方给每个人的打分p[i],d[i], dp[j][k]表示前i个人有j个被选定,选定的人的辩控双方打分差之和是k,此状态下的最大辩控双方和 按01背包做,体积一维是1,体积二维是辩控双方打分差,价值是辩控双方打分和 要求体积一维不得超过m,体积二维在体积一维=m的情况下最小 状态转移... ...
分类:
其他好文 时间:
2019-01-04 14:51:11
阅读次数:
259
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 题目里面有两个限制条件,忍耐度和杀怪数量,所以可以用一个二维数组dp[i][j]来表示在消耗忍耐度i,并且杀怪数量为j时可以得到的最大经验,也可以用三维数组,但是因为每次的答案值依赖前一次的值,所 ...
分类:
其他好文 时间:
2018-10-25 00:17:52
阅读次数:
168
【题目链接】 http://noi.openjudge.cn/ch0206/4978/ 【算法】 做的第一道二维的背包问题,只需开的数组增加一维以正确表述每一个状态即可。本质还是多过程决策+最优子结构+无后效性。 【代码】 ...
分类:
其他好文 时间:
2018-07-27 22:27:32
阅读次数:
189