![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dp
文章平均质量分 51
sentimental_dog
ZJU
展开
-
动态规划-背包问题0-1
来源:http://blog.csdn.net/mu399/article/details/7722810 作者:从杰 01背包问题,是用来介绍动态规划算法最经典的例子,网上关于01背包问题的讲解也很多,我写这篇文章力争做到用最简单的方式,最少的公式把01背包问题讲解透彻。 01背包的状态转换方程 f[i,j] = Max{ f[i-1,j-Wi]+Pi( j >=转载 2016-04-30 23:32:00 · 338 阅读 · 0 评论 -
0-1背包的优化
以上方法的时间和空间复杂度均为O(N*V),其中时间复杂度基本已经不能再优化了,但空间复杂度却可以优化到O(V)。 先考虑上面讲的基本思路如何实现,肯定是有一个主循环i=1..N,每次算出来二维数组f[i][0..V]的所有值。那么,如果只用一个数组f [0..V],能不能保证第i次循环结束后f[v]中表示的就是我们定义的状态f[i][v]呢? 我们会发现,在每次循环中,我们用的其实只原创 2016-05-01 00:03:56 · 470 阅读 · 0 评论 -
部分背包问题
有N个商品,每个商品的重量为WI,价格为:PI,现有一个背包,最多能装M的重量.其中(0 问:怎样装能使包中装入的商品价值最高(对于每个商品可以只装该商品的一部分 肯定选择性价比最高的就可以了。。。。。。原创 2016-05-01 10:58:59 · 313 阅读 · 0 评论 -
0-1背包问题:输出最小背包
如何输出最小背包? 0-1背包#include using namespace std; const int maxn=1005; int dp[maxn][maxn]; int weight[maxn]; int value[maxn]; int n,v; int max(int a,int b){ if(a>b) return a; return b; } int main(int a原创 2016-05-18 16:10:02 · 2082 阅读 · 0 评论 -
背包问题九讲笔记
其实之前已经好几次想读玩崔添翼的《背包九讲》,不过之前总是由于各种缺乏耐心没有啃下来,这次决定要好好读完。 背包九讲来源 : https://github.com/tianyicui/pack 1 01 背包问题 1.1 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即 F [i, v] 表原创 2016-05-27 15:41:55 · 4191 阅读 · 0 评论 -
动态规划水题
1.二维数组最小和 M*N维的二维数组,每个位置有一个非负值,每次只能从右或者从下走,求从(1,1)走到(M,N)的最小值 简单dp,开始的时候设置边界为INF 枚举:C(m+n-2,m)(其中有m步向下走) dp[i][j]=min(dp[i-1][j],dp[i][j-1])+dis[i][j]; 2.最大子数组和 一个整数数组长N,求一个非空的连续子数组使得它的和最大原创 2016-05-26 23:19:06 · 3203 阅读 · 1 评论 -
动态规划
遍历做法int dfs(int n,int sum){ int res; if(n==k+1) return 0; res=max(dfs(n+1,sum+a[2*n]),dfs(n+1,sum+a[2*n+1])); ret原创 2016-05-25 23:31:47 · 5161 阅读 · 0 评论 -
LCS-DP
longest common sequence最长公共子序列 不一定要连续的公共序列 比如ABCDEF ASSBWWC也有ABC作为最长公共子序列 longest common substring 最长公共子串才是连续的 暴力求解方式: 公共子序列的解决方式: 设X = , Y = 为两个序列,并设Z = 为X和Y的任意一个LCS。可以得出: 1、如果xm原创 2016-05-25 23:10:25 · 350 阅读 · 0 评论 -
dp-挑战程序设计竞赛-状态的选择 多重部分和 LIS
DP的核心是状态的定义,状态的巧妙定义。 多重部分和 题目:给定整数a1、a2、.......an,每种数各mi个,判断是否可以从中选出若干数,使它们的和恰好为K。 分析:这是一个完全背包恰好装满的问题,当然可以用O(NKmi) 但通过把状态dp[i][j]定义成第i个数字使得和为j剩下的个数 这样,如果dp[i][j]>=0 那么和为j是可以用前i个数填满的,否则我们定义dp[i][j原创 2016-05-30 23:38:20 · 390 阅读 · 0 评论 -
递推 HDOJ2045
Problem Description 人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多“Cole”(LELE的粉丝,即"可乐"),经过多方打探,某资深Cole终于知道了原因,原来,LELE最近研究起了著名的RPG难题: 有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同原创 2016-07-04 18:33:19 · 294 阅读 · 0 评论 -
DP综述
DP的实质:记忆化搜索 对于一个完全决策问题,全部搜索是2^n的时间,但是这其中包含了很多重复 朴素的背包算法 int W[maxn]; int V[maxn]; int N; int res(int curi,int curj){ if(curi==N) return 0;//没有剩余物品 int result; if(curj<W[curi]) result = res(curi+原创 2016-05-21 20:34:55 · 313 阅读 · 0 评论