【原创】 在动态规划中有一个经典的问题,背包问题,一个背包体积为V,现有n件物品,每件物品都有其价值w和体积v,现在要求将物品装入背包,要求使其获得的价值最大,对这个问题,我们引入一个概念“性价比”,即价值和体积的比值w/v,表明单位体积的价值量,那么自然而然我们在选择物品时,一定是以此选择”性价比 ...
分类:
其他好文 时间:
2017-03-08 11:07:14
阅读次数:
109
http://acm.uestc.edu.cn/#/problem/show/878 设dp[i][j][k]表示在前i个数中,第一个得到的异或值是j,第二个人得到的异或值是k的方案数有多少种。 因为异或后的大小不确定,所以不能压缩数组,但是也不大。。可以过。 #include <cstdio> # ...
分类:
其他好文 时间:
2017-02-26 23:44:06
阅读次数:
194
虽然接触动态规划算法已经有一段时间,给一个01背包问题,能够做到一个表格简单粗暴下去,然后求得结果,但心里总觉得对这个算法理解十分不到位,抱着对算法的热爱,网上很多大牛的算法思维实在让我佩服的五体投地。在此讲一讲动态规划中滚动数组的求解方法,算是对这个知识点做一个记录,也希望有写的不妥的地方,大家能 ...
分类:
编程语言 时间:
2017-02-24 11:54:14
阅读次数:
259
我是萌萌的传送门 这么一道水题我还用各种麻烦的方法去做……这人没救了 看在这题做法挺多的份上,我就都写写好了…… 1.CDQ分治 这个做法是我想到的……因为受到了Eden的新背包问题的启发…… 定义solve(l,r)表示删除编号在[l,r]的物品并计算其DP数组,显然这个是可以折半往下递归的,用没 ...
分类:
其他好文 时间:
2017-02-17 17:00:26
阅读次数:
239
https://vijos.org/p/1426 这是个好题,容易想到用dp[i][v1][v2][v3][v4][v5]表示在前i个物品中,各种东西的容量是那个的时候,能产生的最大价值。 时间不会TLE,但是会MLE.所以就需要把那5维状态进行hash 其实就是对这个排列进行一个hash。 new ...
分类:
其他好文 时间:
2017-02-16 01:13:56
阅读次数:
255
基本思想: 动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规 ...
分类:
编程语言 时间:
2017-02-08 17:11:28
阅读次数:
412
对于一个给定了背包容量、物品费用、物品间相互关系(分组、依赖等)的背包问题, 除了再给定每个物品的价值后求可得到的最大价值外,还可以得到装满背包或将背包装至某一指定容量的方案总数。 对于这类改变问法的问题,一般只需将状态转移方程中的max改成sum即可。 例如若每件物品均是01背包中的物品, 转移方 ...
分类:
其他好文 时间:
2017-02-04 21:04:20
阅读次数:
165
问题 有N件物品和一个容量为V的背包。第i件物品的费用是w[i],价值是c[i]。 这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 算法 这个问题变成了每组物品有若干种策略:是选择本组的某一件,还是一件都不选。 ...
分类:
其他好文 时间:
2017-02-04 19:57:22
阅读次数:
161
问题 二维费用的背包问题是指:对于每件物品,具有两种不同的费用;选择这件物品必须同时付出这两种代价;对于每种代价都有一个可付出的最大值(背包容量)。 问怎样选择物品可以得到最大的价值。 设这两种代价分别为代价1和代价2,第i件物品所需的两种代价分别为a[i]和b[i]。两种代价可付出的最大值(两种背 ...
分类:
其他好文 时间:
2017-02-04 18:12:28
阅读次数:
160
http://acm.hdu.edu.cn/showproblem.php?pid=1171 题意:给出一系列的价值,需要平分,并且尽量接近。 思路:0—1背包问题。 0-1背包问题也就是有n种物品且每种只有一个。第i个物品的体积为vi,重量为wi。选择一些物品装到背包中,使得体积不超过背包的前提下 ...
分类:
其他好文 时间:
2017-01-24 15:49:54
阅读次数:
163