题目大意:给定一个长度为 N 的序列,每个位置有一个权值,现选出一些点,满足相邻的 M 个点中至多有 Q 个点被选择,求选出点权的最大值是多少。 题解:若没有相邻的限制,这道题类似于子集和问题,即:背包问题。考虑相邻的限制,对于每个点可以记录下一个状态,代表以这个点结束,向前 M 个点的选择情况,0 ...
分类:
其他好文 时间:
2019-05-02 23:07:43
阅读次数:
175
//01背包问题蛮力法public void backPage(int[] w, int[] v, int iMax){ int maxValue=0;//当前最大价值 int weight=0;//当前最大价值对应的重量 List result=null;//当前最优的搭配 ArrayList<A ...
分类:
其他好文 时间:
2019-05-02 18:45:36
阅读次数:
115
题目描述 有一个背包,背包容量是M(0<M≤200),有N(1<N≤1000)个物品,物品可以分割成任意大小。要求尽可能让装入背包中的物品总价值最大,但不能超过总容量。 输入格式 第一行有两个数,M和N; 第二行到第N+1行,第i行为第i-1个物品的价值和质量(均为小于100的正整数),中间用空格隔 ...
分类:
其他好文 时间:
2019-05-01 13:42:59
阅读次数:
347
01背包:每件物品都有它的价值和体积,你的背包有一定容量,如何能获取最大价值? 第一行有2个整数分别表示容量和物品数(n)接下来n行每两个数个分别代表一个物体的体积和价值 很显然,每种物品只能拿一件 当然你也可以不拿 如果拿(前提是有足够空间),就相当于背包少了v[i]的体积,多了c[i]的价值, ...
分类:
其他好文 时间:
2019-04-30 21:54:26
阅读次数:
140
https://vjudge.net/contest/297216?tdsourcetag=s_pctim_aiomsg#problem/K 3(物品组数) 3(时间) f[i,j]表示完成了前i件任务,背包容量为j时所能达到的最大价值。f[i-1,j-cost]+val;2 1 最多选一件 2 5 ...
分类:
其他好文 时间:
2019-04-29 12:28:23
阅读次数:
211
一、01背包 有N件物品和一个容量为V的背包。第i件物品的价格(即体积,下同)是w[i],价值是c[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 这是最基础的背包问题,总的来说就是:选还是不选,这是个问题 相当于用f[i][j]表示前i个背包装入容量为v的背包中 ...
分类:
其他好文 时间:
2019-04-27 09:48:01
阅读次数:
104
有一点乱搞吧......对人对背包的理解有些考验,要想知道去掉某个点的值,可以选择对前缀求一次背包,后缀求一次背包,而且不省掉价钱那一维, 这样每个点就可以由前后组合成了,枚举一下价钱取max即可 直接01的多重背包就可以过 ...
分类:
其他好文 时间:
2019-04-25 18:52:25
阅读次数:
185
当时一直在想前缀和。。。多亏张队提醒。。。 从1到n背次包,保存每一个状态下的价值,就是不要把第一维压掉;再从n到1背一次,同样记住每种状态; 然后询问时相当于是max(前缀+后缀),当然前缀后缀中间去掉了一个应去掉的商品。 2019.04.25 ...
分类:
其他好文 时间:
2019-04-25 01:08:36
阅读次数:
142
原题链接:点击这里 一道很水很水的背包问题? 大概算不上背包吧QAQ 自己的dp 真的是太差劲啦,以后每天一道LeetCode 备战秋招! Runtime: 4 ms, faster than 82.08% of Java online submissions for Maximum Sum of ...
分类:
移动开发 时间:
2019-04-22 00:44:53
阅读次数:
182
01背包: 无优化 空间优化: 完全背包: 多重背包: (类似01背包,后面补) 分组背包: cpp for(int i=1;i=0;j ) { for(int i=1;i ...
分类:
其他好文 时间:
2019-04-21 20:11:36
阅读次数:
151