完全背包模型 二维 #include<iostream> using namespace std; const int N = 4010; const unsigned int mod = 1 << 31; unsigned int f[N][N]; int n; int main(){ cin > ...
分类:
其他好文 时间:
2020-10-29 09:20:50
阅读次数:
15
DP +++ 一.背包问题 1.01背包 二维数组状态转移 #include <iostream> using namespace std; const int N = 1010; int v[N], w[N]; int n, m; int f[N][N]; int main() { cin >> ...
分类:
其他好文 时间:
2020-10-26 11:54:14
阅读次数:
26
##C++版本: 01背包 for (int i = 0; i < n; i++) { for (int j = M; j >= w[i]; j--) { dp[j] = max(dp[j], dp[j - w[i]] + v[i]); } } 完全背包 for (int i = 0; i < n; ...
分类:
其他好文 时间:
2020-09-17 23:55:33
阅读次数:
37
ARC096D 题目链接 稍微差分一下,问题可以变成完全背包,但是每个元素的出现次数为 \(D\),花费为 \(m_i'\),贡献为 \(\textrm{size}(i)\)。 然后观察一下物品个数和贡献都小于 $50$ 但是 D 却是 $10^9$ 考虑贪心,我们按照 "性价比" 进行贪心,假设 ...
分类:
其他好文 时间:
2020-09-17 22:20:47
阅读次数:
31
完全背包解法: 为什么想到完全背包变式? 因为划分一个整数n,只能用<= n的数字,并且一个数字可以用无限次,所以是类似于完全背包的问题。 得到状态转移方程: \(f(i, j) = f(i - 1, j) + f(i - 1, j - i) + f(i - 1, j - 2 * i) + ... ...
分类:
其他好文 时间:
2020-09-17 17:00:29
阅读次数:
16
HDU - 1114 题目翻译: 在acm能够做任何事情之前, 必须编制预算并获得必要的财政支持。这一行动的主要收入来自IBM。这个想法其实很简单,每当一些会员有一点小钱时,他就会把所有的硬币都扔到小猪存钱罐里。这个过程是不可逆转的, 除非打破猪,否则硬币不能拿出来。过了足够长的时间, 存钱罐里应该 ...
分类:
其他好文 时间:
2020-07-28 22:08:26
阅读次数:
76
完全背包问题 递推关系: 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
题目链接 Polycarpus has a ribbon, its length is n. He wants to cut the ribbon in a way that fulfils the following two conditions: After the cutting each r ...
分类:
其他好文 时间:
2020-07-21 21:35:20
阅读次数:
72
知识点: DP,差分,Bfs 原题面 双倍经验 P3943 星空。 将此题代码交过去可直接 AC,但 P3943 数据较弱,没有卡掉错误的背包解法。 完全背包解法错误原因 详见 题解 P3943 【星空】 - Epworth 的博客。 题意简述 给定一长度为 \(n\) 的 $0$ 串,给定 \(k ...
分类:
其他好文 时间:
2020-07-13 09:25:09
阅读次数:
65
初始化的细节问题 我们看到的求最优解的背包问题题目中,事实上有两种不太相同的问法。 有的题目要求“恰好装满背包”时的最优解,有的题目则并没有要求必须把背 包装满。一种区别这两种问法的实现方法是在初始化的时候有所不同。 如果是第一种问法,要求恰好装满背包,那么在初始化时除了F[0]为0,其 它F[1. ...