动态规划
文章平均质量分 89
仅是路过
这个作者很懒,什么都没留下…
展开
-
HDU2196 经典树形DP
最近在学习树形DP,不太好整,也可能是自己悟性差,基本上理解一道题并做出一道题得花费上一天以上,这题是一个经典的树形DP题目。题目翻译如下: 前一段时间,学校买了第一台计算机(因此这台计算机的ID是1)。在最近几年,学校又买了N-1个新的计算机。每一个新的计算机被连接到安装好的一个计算机上。学校管理者担心局域网的运行缓慢,想知道第i个电脑需要发送信号的最大距离Si(即电缆长度到达的最远原创 2013-04-03 19:59:33 · 624 阅读 · 0 评论 -
RMQ问题之Sparse_Table算法
RMQ问题,全名(Range Minimum/Maximum Query),是求给定区间中的最值问题。主要方法及复杂度如下:1、朴素(即搜索),O(n)-O(qn) online。2、线段树,O(n)-O(qlogn) online。3、Sparse_Table(实质是动态规划),O(nlogn)-O(1) online。4、RMQ标准算法:先规约成LCA(Lowest C翻译 2013-01-18 10:42:44 · 371 阅读 · 0 评论 -
NYOJ44 子串和
其实自己最近这一段时间都是在复习巩固上一年学的知识,自从荒废半年后,好多东西都忘了,重新巩固一遍注定还要花一段时间了。 这题其实是动态规划中经典的问题,最大子串和问题: 下面是我转来的一段对该算法描述比较易懂的解释:对于一个包含负值的数字串array[1...n],要找到他的一个子串array[i...j](0这里我们需要注意子串和子序列之间的区别。子串是指数组中连续的若干个元素,翻译 2013-03-14 10:22:45 · 708 阅读 · 0 评论 -
HDU1950,单调递增最长子序列(n*lgn)算法
这题目是经典的DP题目,也可叫作LIS(Longest Increasing Subsequence)最长上升子序列 或者 最长不下降子序列。很基础的题目。但是注意的是此题用传统的n^2算法会超时。 A.O(n^2)算法分析如下:(a[1]...a[n] 存的都是输入的数)1、对于a[n]来说,由于它是最后一个数,所以当从a[n]开始查找时,只存在长度为1的不下降子序列;2原创 2013-03-19 15:39:47 · 2090 阅读 · 0 评论 -
整数划分问题解法2-动态规划
原文来自:http://blog.csdn.net/athenaer/article/details/8265234整数划分 --- 一个老生长谈的问题: 1) 练练组合数学能力. 2) 练练递归思想 3) 练练DP 总之是一道经典的不能再经典的题目: 这道好题求: 1. 将n划分成若干正整数之和的划分数。 2. 将n划分成k个正整数之和的划分数。转载 2013-04-12 21:10:34 · 509 阅读 · 0 评论 -
面试题:求二叉树中节点的最大距离
#include #include using namespace std;#define maxn 0x3ffffffint max1;struct node{ int num; //二叉树中该节点的值 int longest_val; //以该节点为根离子树中的最大距离 int second_val; //以该节点为根离子树中的第二大距离原创 2013-07-19 10:56:25 · 686 阅读 · 0 评论 -
HDU1565 方格取数(1) (状态压缩DP)
题意: 给你一个n*n的格子的棋盘,每个格子里面有一个非负数。从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的和最大。思路: 定义 dp[ i ][ j ]表示第 i 行选择 j 的最大值。选择 j指的是把j化为二进制,选择对应位值为1的。比如 dp[1][5] , 5 二进制: 000原创 2013-08-28 10:42:30 · 522 阅读 · 0 评论