
ACM算法之动态规划
文章平均质量分 67
Tander_Tang
喜欢数学,喜欢算法,喜欢编程,喜欢计算机。
展开
-
HDU2089 数位DP
原问题是求区间 [ n, m ]中,不含数字4和62的数的总个数.采用的办法是数位 DP。定义数组 dp[i][2],他的含义如下: dp[i][0] : 表示数字最大长度是 i 且不含4和62的数总个数。 dp[i][1] : 表示数字的最大长度是 i 且不含 4 和62,但是最高位是2的数总个数。于是:dp[i][0]=dp[i-1][0]*9-dp[i-1][1];原创 2016-03-15 17:51:51 · 353 阅读 · 0 评论 -
动态规划
动态规划(dynamic programming)与分治法相似,都是通过组合子问题的解来构造原问题的解。不同的是,分治法是将原问题划分为不想交的子问题,而动态规划则应用于子问题重叠的情况。动态规划通常用来求解最优化问题。有的时候最优解有多个。设计一个动态规划算法的步骤: 1.刻画一个最优解的结构特征 2.递归的定义最优解的值原创 2016-03-05 21:39:14 · 337 阅读 · 0 评论 -
01背包问题
01背包问题描述:给定N个体积为V1....Vn,价值为P1...Pn的物品和一个体积为V的包,求能够装进包中物品的最大价值。为了设计一个动态规划算法,我们需要导出状态转移方程。先考虑原问题的子问题,假设我们考虑前i个问题,背包容积为j,记将前i个物品装到容积为j的包中最大总价值为W[i,j];每个物品只有选择和不选择两种情况,我们根据第i个物品是否选择进行分类。在不包含第i个物品的最优解价值原创 2016-03-06 14:19:29 · 496 阅读 · 0 评论 -
完全背包问题
完全背包问题二进制法与转换为01背包问题,还有O(NV)的算法。的特点是每种物品数量没有限制,可以无限使用。很容易定义完全背包状态转移方程,设第i个物品选择k个,于是:原创 2016-03-06 16:46:46 · 429 阅读 · 0 评论 -
HDU 2557 How to type
Problem DescriptionPirates have finished developing the typing software. He called Cathy to test his typing software. She is good at thinking. After testing for several days, she finds that if she原创 2016-03-09 14:20:26 · 399 阅读 · 0 评论 -
约瑟夫问题与变形
1.约瑟夫问题:n个人编号为0...n-1.围成一个圈。从编号为0的人开始顺时针计数,每数到k个人时让其出局(第一次出局的是编号为(k-1)mod n的人),接着又从下一个人开始计数。经过n-1轮报数后,求最终留下的人的编号。 我们只关心最后一个留下的人,比如,当删除第一个人后,也就是删除编号为(k-1)mod n的人,此时我们要求的人就是剩下n-1个人中最后留下的那个人。用F[i原创 2016-03-12 23:10:42 · 971 阅读 · 0 评论 -
HDU 5642 数位DP
对于这种问题,首先要找到一个很好的分类办法。由于最大连续的字母不可以超过3个。于是可以按照字符串最后的字符连续重复的次数分为:最后字符重复1,2,3次这3中情况:定义dp[i][4]; dp[i][1] : 表示长度为 i 的字符串在第 i 个位置重复了 1 次。 dp[i][2] : 表示长度为 i 的字符串在第 i 个位置重复了 2 次。 dp[i][3]原创 2016-03-15 13:56:37 · 612 阅读 · 0 评论