
动态规划
crazyboy12138
新博客地址: https://www.jianshu.com/u/6d5b80cdfe5d
展开
-
poj 3181 Dollar Dayz
题目链接:poj 3181题目大意: 有n个硬币,k种商品,价格分别为1,2,3…k,问:选出若干商品,使其总价格恰好为n,共有多少种方案典型的完全背包问题。思路:设dp[i][j]是从前j件商品中选出价值和恰为i的商品的方案数,显然,dp[i][j]是在dp[i][j-1]的基础上,多了j这种金币参与的方案,比如,dp[5][3]相比dp[5][2],多了{1, 1, 3}和{2, 3}这两种方原创 2017-04-29 12:05:35 · 359 阅读 · 0 评论 -
hdu1421 搬寝室
Problem Description 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3号楼,因为10号要封楼了.看着寝室里的n件物品,xhd开始发呆,因为n是一个小于2000的整数,实在是太多了,于是xhd决定随便搬2*k件过去就行了.但还是会很累,因为2*k也不小是一个不大于n的整数.幸运的是xhd根据多年的搬东西的经验发现每搬一次的疲劳度是原创 2017-04-22 10:44:04 · 326 阅读 · 0 评论 -
hdu1159 Common Subsequence
原题链接: http://acm.hdu.edu.cn/showproblem.php?pid=1159题目大意:给两个字符串,求最大上升公共子序列长度。(不要求连续) Sample Input abcfbc abfcab programming contest abcd mnp Sample Output 4 2 0 设dp[i+1][j+1]表示截止a[i],原创 2017-04-22 11:32:15 · 325 阅读 · 0 评论 -
背包问题
01背包 有 n 个重量和价值分别为Wi,Vi的物品,现从这些物品中挑选出总量不超过 W 的物品,求所有方案中价值总和的最大值。例题链接:gdu 1131 背包1设dp[i]为体积为i的背包能容纳的最大价值, 显然,每个物品只有拿与不拿两种状态,所以: dp[i] = max(dp[i], dp[i-w[i]] + v[i]完整代码:#include <cstdio> #include <cs原创 2017-04-23 14:24:45 · 793 阅读 · 0 评论 -
hdu 4826 Labyrinth
题目链接: hdu 4826题目大意:一个n*m的迷宫,每个方格有若干金币(可正可负),每个方格最多走一次,从左上角走到右上角,求获得的最大金币数。设dp[i][j][k] (k = 0, 1, 2) 分别表示向上,下,右三个方向走的最大金币数,发别写出三个方向的递推式。 max(dp[1][m][0], dp[1][m][1], dp[1][m][2])即是答案。#include <cstdio原创 2017-04-23 16:59:58 · 279 阅读 · 0 评论 -
gdufe acm 1107 Apple Collection
题目链接:gdu 1107题目大意: 有一个n*m的矩阵,每个单位有若干苹果,从左上角开始,只能往右或往下,求可获得的最大苹果数。 思路:先处理第一行和第一列,然后状态转移: dp[i][j] = max(dp[i-1][j], dp[i][j-1]) + a[i][j] 代码如下:#include <cstdio> #include <algorithm> #include <cstr原创 2017-04-23 17:08:59 · 385 阅读 · 0 评论 -
数位dp入门
转载自: http://blog.youkuaiyun.com/wust_zzwh/article/details/52100392基础篇数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数。所谓数位dp,字面意思就是在数位上进行dp咯。数位还算是比较好听的名字,数位的含义:一个数有个位、十位、百位、千位……数的每一位就是数位啦! 之所以要引入数位的概念完全就是为了dp。数转载 2017-05-05 16:03:42 · 348 阅读 · 0 评论 -
hdu 1506 Largest Rectangle in a Histogram
题目链接:hdu 1506题目大意: 给一些连续的,底固定为1,高度不等的矩形,这些矩形构成一个图形,求该图形包含的最大矩形面积。例如:下面左边的图形,包含的最大矩形是右图的阴影面积一开始,我是这么做的:#include <cstdio> #include <climits> #include <cstring> const int maxn = 100000 + 10; typedef long原创 2017-04-25 19:26:45 · 254 阅读 · 0 评论 -
poj 1088 滑雪
题目链接: poj 1088 DescriptionMichael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 516 17 18 19 615 24 25 20原创 2017-04-26 12:15:35 · 254 阅读 · 0 评论