据传这类问题叫做有依赖性的背包问题:选某个物品的同时必须连带选其他物品 容易想到其实是决策发生了变化: 可以选啥都不选 可以只选主件 可以选主件+一个附件 可以选主件+两个附件 其他和01背包一样 struct Bag { int w; int val; Bag(int x = 0,int y = ...
分类:
其他好文 时间:
2020-07-30 22:20:53
阅读次数:
91
1、题目描述: 有 n 件物品和一个最大承重为 W 的背包,每件物品的重量是 𝑤i、价值是 𝑣i 在保证总重量不超过 W 的前提下,选择某些物品装入背包,背包的最大总价值是多少? 注意:每个物品只有 1 件,也就是每个物品只能选择 0 件或者 1件。 假设 values 是价值数组,weight ...
分类:
其他好文 时间:
2020-07-30 22:16:49
阅读次数:
91
分组背包: #include<iostream> #include<cmath> #include<cstring> #include<algorithm> using namespace std; int n,m; const int N=105; int f[N],v[N],w[N]; int ...
分类:
其他好文 时间:
2020-07-29 21:15:50
阅读次数:
54
HDU - 1114 题目翻译: 在acm能够做任何事情之前, 必须编制预算并获得必要的财政支持。这一行动的主要收入来自IBM。这个想法其实很简单,每当一些会员有一点小钱时,他就会把所有的硬币都扔到小猪存钱罐里。这个过程是不可逆转的, 除非打破猪,否则硬币不能拿出来。过了足够长的时间, 存钱罐里应该 ...
分类:
其他好文 时间:
2020-07-28 22:08:26
阅读次数:
76
题目 传送门 思路 如果暴力背包必然会T, 但是机房巨佬JZM好像直接用DP过了 我们考虑,如果只有1和2两种重量 我们可以用一个$log$来处理出答案 先用重量为2暴力填入背包, 我们考虑将价值最小的一个重量为2的推出背包意味着价值最大的两个重量为1的物品价值之和大于重量为2的最小价值 这很显然是 ...
分类:
其他好文 时间:
2020-07-28 00:26:23
阅读次数:
88
有一个正方形游戏背包,大小为S*S(1<=S<=1024)。含有很多小格子,小格子编号从0开始,直到S-1。每一个格子里有一定数量的物品,同时每一个格子的物品里的数目也是不断变化的,现在要一边进行修改某些单位格子内的物品的数目,同时也要询问某些区域的手机数目。 数据保证每个格子内物品数目一直在int ...
分类:
编程语言 时间:
2020-07-26 23:01:45
阅读次数:
78
完全背包问题 递推关系: dp[0][j]=0 dp[i+1][j]=max{dp[i][j-k*w[i]]+k*v[i]|0=1)个 i 物品的情况,与在dp[i+1][j-w[i]]的计算中选择k-1的情况是相同的,所以dp[i+1][j]的递推中k>=1部分的计算已经在dp[i+1][j-w[... ...
分类:
其他好文 时间:
2020-07-25 23:28:08
阅读次数:
69
0/1背包 package.pas 【问题描述】 有1个容量为m的背包,现有n种物品,重量分别为w1,w2…wn,价值分别为v1,v….vn,若每种物品只有1件,求能放入的最大总价值。【输入格式】第一行:两个整数m(m<=200)和n(n<=30)第2~n+1,每行两个整数wi和vi【输出格式】一个 ...
分类:
其他好文 时间:
2020-07-23 16:29:11
阅读次数:
59
题目链接:https://codeforces.com/contest/1382/problem/D 题意 给出一个大小为 $2n$ 的排列,判断能否找到两个长为 $n$ 的子序列,使得二者归并排序后能够得到该排列。 题解 将原排列拆分为一个个连续子序列,每次从大于上一子序列首部的元素处分出下一连续 ...
分类:
其他好文 时间:
2020-07-22 15:28:16
阅读次数:
80