摘要: 复习一下基础DP,记忆化搜索题意:给一个名字,和n*m矩阵,下面是矩阵信息,每次在一个格子,可以向上下左右移动,但是要求那个数字比当前所在格子数字小。可以从任意点出发,问最长的距离是多少dp[i][j]表示从(i,j)出发能走的最长路dp[i][j] = max{ dp[x][y] } + 1 , 其中(x,y)是(i,j)附近的四个格子之一并且a[x][y] < a[i][j]#include <cstdio>#include <cstring>#define N 110#define MAX 110#define max(a,b) ((a)>(b)?(a 阅读全文
posted @ 2013-04-22 19:40 Titanium 阅读(566) 评论(0) 推荐(0) 编辑
摘要: poj 2168 相同的题目区间DP题意:输入n,表示有n个海龟在一条直线上,乌龟可以站在相同的位置(即坐标可以相同),下面n行,每行两个数字,表示第i个乌龟给出的信息,第一个数字表示它前面有多少只乌龟,第二个数字表示它后面有多少个乌龟。并不是每个乌龟的信息都是正确,有些乌龟的信息是假的,或者和别的乌龟信息冲突,你的任务是选出尽量多的乌龟,使他们的信息不冲突,然后输出有多少个乌龟说谎,和那些乌龟的编号,可能有多种情况,只要保证说谎的乌龟数最少,输出哪种情况都可以分析:乌龟可以站在一样的位置,我们给乌龟排名,可以把它们放在不同的位置 例如 1 2 3 3 3 4 4 5 , 虽然有些排名相同,但 阅读全文
posted @ 2013-04-22 19:20 Titanium 阅读(414) 评论(0) 推荐(0) 编辑
摘要: 数据结构--二叉查找树遍历题意:n,表示二叉查找树的节点个数,每个节点有个数值,并且数值各异不会出现重复的,查找树左子树的节点数值小于根,右子树的节点数值大于根。 一般的后序遍历二叉树时 左孩子,右孩子,根 ; 现在定义一种新的后序遍历 右孩子,左孩子,根 输入n,下面一个序列,是普通后序遍历二叉树的序列 , 要你根据这个序列,输出新定义的那种后序遍历序列 讲到这里,看图,看sample可以理解题意了要是一般的二叉树只知道后序遍历序列是不能建树的,但是这里是二叉查找树却可以对于一个后序遍历序列,它可以分解为 (左子树部分)(右子树部分)(根),由于是查找树,可知(左子树)<(... 阅读全文
posted @ 2013-04-22 15:58 Titanium 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 找规律约瑟夫环问题变形。在这个约瑟夫环问题中,固定每次间隔两人,10个人,杀人顺序为2,4,6,8,10,3,7,1,9,最后剩下5定义一种运算J^m(n) 表示 m次嵌套 J( J( J(n) )好像J^2(10) = J(J(10)) = J(5) = 3而m和n的最大值是 10^9这个问题 主要是能快速算出 J(n),不难想到如果能算出J(n),可以暴力地一步一步迭代下去做m次,容容易发现不用做m次,因为J(1) = 1,当n降到1的时候,m再大都没意义了可以发现这个问题是指数递减的,m<=10^9 是个纸老虎同样地可以打表看看J(n)的值,一看就能看到规律对于一个范围的n , [ 阅读全文
posted @ 2013-04-22 00:00 Titanium 阅读(183) 评论(0) 推荐(0) 编辑