动态规划及递推
文章平均质量分 73
代金桥
交流邮箱daijinqiao(at)163.com
展开
-
ural 1009 K-based Numbers
类型:递推 题目:求n位的合法(无两个连续的0出现)k进制个数状态:f(i)表示合法的i位k进制数(首位不为0)的个数 容易知道第i位有k - 1种选择,考虑第i - 1位,如果第i - 1位为0,情况转化为f(i - 2),如果不为0,情况转化为f(i - 1)故有:f(i) = (k - 1)(f(i - 1) + f(i - 2))// ural 1009 K-based原创 2012-03-06 10:00:00 · 228 阅读 · 0 评论 -
ural 1073 Square Country
类型:DP题目:http://acm.timus.ru/problem.aspx?space=1&num=1073思路:状态f(i)表示整数i至少能由f(i)个平方数组和而成则:f(i) = min(f(i - k^2) + 1)// ural 1073. Square Country// ac 0.046s#include #include #include #in原创 2012-03-13 11:25:57 · 267 阅读 · 0 评论 -
ural 1078 Segments
类型:DP题目:http://acm.timus.ru/problem.aspx?space=1&num=1078思路:按照长度从小到大进行排序,然后就是最长上升子序列,这样最优解一定可以得到!!!模型的建立// ural 1078. Segments// wa ac 0.031s#include #include #include #include #include原创 2012-03-13 15:12:30 · 299 阅读 · 0 评论 -
hdoj 3203 Door Repairing
类型:DP题目:http://acm.hdu.edu.cn/showproblem.php?pid=3203来源:2009 Shanghai Invitation Contest Host by DHU思路:设状态dp(i, 0)表示第i个人来之前门坏,到结束时的最小花费,dp(i, 1)表示第i个人来之前门好,到结束时的最小花费。当第i个人来之前门坏时,YY有两种选择,修或者原创 2012-03-31 08:51:15 · 310 阅读 · 0 评论 -
hdoj 1506 | poj 2559 Largest Rectangle in a Histogram
类型:递推题目:http://poj.org/problem?id=2559思路:从左向右扫一遍,记录l[i](以i为最低高度的左边界),从右向左扫一遍,记录r[i](以i为最低高度的右边界)从左向右扫描时,判断当前位置的前一个位置,如果该位置的hi值大于当前位置的hi值,则更新当前l[i]值为l[i] - 1位置的l[l[i] - 1]值,循环直至l[i] - 1位置的hi小于当原创 2012-03-16 11:39:48 · 301 阅读 · 0 评论 -
hdoj 1513 Palindrome
类型:DP 题目:http://acm.hdu.edu.cn/showproblem.php?pid=1513 思路: 状态dp(i, j)表示从位置i到位置j最少需要插入的字符数 情况1:str[i] == str[j] 则dp(i, j) = min(dp(i, j), dp(i + 1, j - 1)) 情况2:str[i] != str[j] 则dp(i, j) = min原创 2012-03-16 09:37:08 · 244 阅读 · 0 评论 -
hdoj 3660 Alice and Bob's Trip
类型:树形DP题目:http://acm.hdu.edu.cn/showproblem.php?pid=3660来源:2010 Asia Regional Harbin思路:令状态dp[i]表示以i为根时到叶子节点的最优值,当i为bob时,取最大值,当i为alice时,取最小值。用dist[i]记录从0节点到当前节点的路径的长度。当搜索到某条边(u, v)时,根据题意知始终有:di原创 2012-04-01 18:33:55 · 265 阅读 · 0 评论 -
hdoj 2452 Navy maneuvers
类型:有向无环图DP题目:http://acm.hdu.edu.cn/showproblem.php?pid=2452来源:2008 Asia Regional Harbin思路:题中给定一个有"根"节点的有向无环图,可以从该点开始自定向下进行记忆化搜索,当搜索到节点v时,求出其两种状态的值。即dp[v][0]表示自节点v开始Victory先走的最优值,dp[v][1]表示自节点v原创 2012-04-09 19:20:54 · 301 阅读 · 0 评论 -
hdoj 3664 Permutation Counting
类型:DP题目:http://acm.hdu.edu.cn/showproblem.php?pid=3664来源:2010 Asia Regional Harbin思路:状态dp(n, k)表示n个数有k个ai > i的排列数。考虑第n个数,设当前排列为a1 a2 ...ai...an -1(1)放在末尾,不影响当前排列的结果 (2) 和某一个ai交换,如果ai i,则结果不原创 2012-04-11 09:29:17 · 313 阅读 · 0 评论 -
ural 1081 Binary Lexicographic Sequence
类型:DP题目:http://acm.timus.ru/problem.aspx?space=1&num=1081思路:用f(i)表示位数为i的合法的数的个数,容易得到f(i) = f(i - 1) + f(i - 2)对于k, 假如f(n - 1) >= k,则第1位为0,否则为1,为1时,更新k = k - f(n - 1),依次得到每一位数// ural 1081. Bina原创 2012-03-13 17:34:11 · 250 阅读 · 0 评论 -
ural 1031. Railway Tickets | poj 2355
类型:DP题目:http://acm.timus.ru/problem.aspx?space=1&num=1031思路:用f(i)表示到第i站时的最小费用,考虑第i站有两种选择,单独买一张票,或者和前面的几个站共同买一张票!!!可能总共用一张票就够了// ural 1031. Railway Tickets// wa wa wa wa ac 0.406s#include #i原创 2012-03-12 19:21:39 · 643 阅读 · 0 评论 -
ural 1029 Ministry
类型:DP题目:http://acm.timus.ru/problem.aspx?space=1&num=1029思路:很容易想到f(i, j) = min(f(i - 1, j), f(i, j - 1), f(i, j + 1)) + val[i][j]实现时,可以分两步dp,对于每一行先从左往右dp,然后再从右往左dp,这样可以得到正确解利用上一层的最优解,假如当前j是由j原创 2012-03-12 12:39:31 · 296 阅读 · 0 评论 -
ural 1012 K-based Numbers. Version 2
类型:递推+高精度题目:同ural 1009思路:同ural 1009// ural 1012 K-based Numbers. Version 2#include #include #include #include using namespace std;#define FOR(i,a,b) for(i = (a); i < (b); ++i)#define FOR原创 2012-03-06 10:52:31 · 305 阅读 · 0 评论 -
zoj 3578 Matrix
类型:DP来源:113 - ZOJ Monthly, February 2012!!!用每个数据中的hi元素【a[i][2]】记录当第i次操作完成时,以i为最外层区间的最大值!!!N*M grids 范围为:(0,0)~(n-1,m-1)// zoj 3578// wa wa ac 160 208#include #include using namespace std原创 2012-03-07 23:48:21 · 418 阅读 · 0 评论 -
ural 1017 Staircases
类型:递推题目:http://acm.timus.ru/problem.aspx?space=1&num=1017思路:用f(i, j)表示,用j块砖组成i个梯级能组成的方案数考虑最下面一层为i块砖,如果去掉这一层,会有两种情况f(i, j - i)和f(i - 1, j - i)故有f(i, j) = f(i, j - i) + f(i - 1, j - i)初始化:f(1,原创 2012-03-10 10:41:05 · 424 阅读 · 0 评论 -
poj 1742 Coins
类型:DP题目:http://poj.org/problem?id=1742来源:LouTiancheng@POJ思路:用cnt数组记录每个数据使用当前coin的次数,在次数限制范围内不断更新未达到的值 O(nm)// poj 1742 Coins// ac 768K 1532MS#include #include #include #include #include原创 2012-03-26 18:07:57 · 323 阅读 · 0 评论 -
hdoj 1028 Ignatius and the Princess III
类型:DP题目:http://acm.hdu.edu.cn/showproblem.php?pid=1028思路:题目是求整数n的划分方案数。令状态dp(p, n) = n的整数划分方案数其中规定最大的整数不大于p有递推式:dp(p, n) = (1) dp(n, n) n (2) dp(p - 1, n) + dp(p, n - p)原创 2012-03-26 18:21:13 · 247 阅读 · 0 评论 -
ural 1039 Anniversary Party
类型:树形dp题目:http://acm.timus.ru/problem.aspx?space=1&num=1039思路:考虑到树形结构,以1为根节点建树。用状态f(0, i)表示以i节点为根并且不包含i节点的最大值f(1, i)表示以i节点为根并且包含i节点的最大值。因为同一条边的两个节点不能同时出现。可以得到:f(0, i) = ∑max(f(0, j), f(1, j))原创 2012-03-11 20:19:35 · 290 阅读 · 0 评论 -
ural 1018 Binary Apple Tree
类型:树形动态规划[经典]状态:dp(i,j)表示以i为根的子树(还包括i与i的父亲这条边)内,保存j条边最多可以有多少苹果转移方程:dp(i,j) = max(dp(i.left,k) + dp(i.right,j-1-k)) + i.val (0思路:输入处理,递归建树,树内dp记忆化搜索实现,输出结果#include #include #include usin原创 2012-03-11 10:44:05 · 561 阅读 · 0 评论 -
ural 1036 Lucky Tickets
类型:DP题目:http://acm.timus.ru/problem.aspx?space=1&num=1036思路:状态f(i, j)表示前i个数字和为j的方案数容易得到f(i, j) =∑ f(i - 1, j - k) (0 需要用高精度计算!!!s为奇数的情况// ural 1036. Lucky Tickets// wa wa ac 0.203s#inclu原创 2012-03-13 09:06:18 · 317 阅读 · 0 评论 -
hdoj 3033 I love sneakers!
类型:分组背包题目:http://acm.hdu.edu.cn/showproblem.php?pid=3033来源:2009 Multi-University Training Contest 13 - Host by HIT思路:状态dp(i, m)表示用m钱买前i种品牌的产品可以获得的最大价值对于第i种品牌的当前物品j(1)不放j物品,那么结果为原始值dp(i,原创 2012-04-16 19:10:59 · 934 阅读 · 1 评论