题目: 度度熊有一张纸条和一把剪刀。 纸条上依次写着 N 个数字,数字只可能是 0 或者 1。 度度熊想在纸条上剪 K 刀(每一刀只能剪在数字和数字之间),这样就形成了 K+1 段。 他再把这 K+1 段按一定的顺序重新拼起来。 不同的剪和接的方案,可能会得到不同的结果。 度度熊好奇的是,前缀 1 ...
分类:
其他好文 时间:
2020-04-16 19:29:06
阅读次数:
45
题意:给出n个文件,每个文件有大小、价值两个参数 给出一个u盘,u盘有容量参数(存放文件的大小总和不能超过这个容量) 有一个传输通道,通道也有大小参数,传输的文件的大小不能大过这个通道大小 问:给定一个价值大小p,让我们去寻找一个最小的通道大小, 做到在这个大小的情况下,能够装到的价值大于等于此价值 ...
分类:
其他好文 时间:
2020-04-14 20:23:30
阅读次数:
51
#include <iostream>#include <algorithm>using namespace std;const int MAX=1010;int f[MAX][MAX];//表示装了前i个背包后的最大价值是多少int v[MAX],w[MAX];int main(){ int n, ...
B(DP) 最重要的是状态转移对同一阶段的影响, 就像01背包优化为什么要倒叙,但这道题不光要倒叙,还要把这阶段的转移先存起来,最后统一保存 就避免了转移同一阶段相互影响 至于排序,当然希望升级多余的经验越多越好。 #include <bits/stdc++.h> #define RE regist ...
分类:
其他好文 时间:
2020-04-12 22:14:12
阅读次数:
104
include using namespace std; int n,v,w[105],c[105],f[1005]; int main() { cin v n; for(int i=1;i c[i] w[i]; for(int i=1;i=0;j ) { if(c[i] j) break; f[j ...
分类:
其他好文 时间:
2020-04-12 11:01:24
阅读次数:
89
典型的背包问题 本题当中,每样武器只能选一次,即要么选,要么不选。典型的 01 背包,状态转移: $dp[j]=\min{dp[j b[i]]+a[i],dp[j]}$ 因为有两个限制条件(质量和体积),所以在 01 背包基础上再加一维,空间复杂度$O(n^2)$,时间复杂度$O(n^3)$,数据在 ...
分类:
其他好文 时间:
2020-04-11 22:04:26
阅读次数:
62
"POJ1015" "UVA323" "参考文章" 题目大意:给出$n$对数,从中选出$m$对数,使各对数的差累加和最小的情况下总和最大。 设每对数的差值为$sub[i]$,和为$sum[i]$。要从中选出m个数,对于每个数来说,都有选与不选两种情况,所以能不能用背包来做呢?用背包的话还得确定容量。 ...
分类:
其他好文 时间:
2020-04-10 10:36:54
阅读次数:
78
本文始发于个人公众号: TechFlow ,原创不易,求个关注 今天是算法与数据结构的第15篇,也是动态规划系列的第4篇。 之前的几篇文章当中一直在聊背包问题,不知道大家有没有觉得有些腻味了。虽然经典的文章当中背包一共有九讲,但除了竞赛选手,我们能理解到单调优化就已经非常出色了。像是带有依赖的背包问 ...
分类:
其他好文 时间:
2020-04-09 12:47:07
阅读次数:
93
传送门 大意: 有价值分别为1..6的大理石各a[1..6]块,现要将它们分成两部分,使得两部分价值之和相等,问是否可以实现。其中大理石的总数不超过20000。 解题思路: 妥妥的多重背包+二进制拆分,主要写一下二进制拆分存个档(儿时的噩梦)。 总所周知,20,21,22,……2k-1从中挑选若干个 ...
分类:
其他好文 时间:
2020-04-09 00:16:52
阅读次数:
90
题意:给出n堆木块,每一堆从大到小堆砌,是一个非绝对递减序列 每一堆的高度就所有木块大小的总和,让我们将这n堆木块中取出一些,使n堆木块高度一样高 求出最高的高度(只能取出,不能增加) 思路:根据题目数据,最大的高度是10000,我们就像操作01背包那样,从大到小枚举一遍, 然后求出这n堆木块,都能 ...
分类:
其他好文 时间:
2020-04-06 20:21:22
阅读次数:
64