2015年5月5日
摘要: 题目描述由于这个跟后几周是一个系列,这周的做法比较简单。把第一个人的所有祖先做标记,第二个人向上查找祖先直到找到一个标记过的节点或无法继续为止。代码其实没什么意思。import java.util.HashMap;import java.util.Map;import java.util.Scann... 阅读全文
posted @ 2015-05-05 21:21 xblade 阅读(114) 评论(0) 推荐(0)
摘要: 题目描述回想一下 hiho 03 和 hiho 04 的 KMP 算法和 Trie 图。Trie 图其实就是在树上做 KMP。同样地,树上的动归其实就是……在树上做动归。之前做的动归是在线性表上做的,只有一条路径,树上的动归有多条路径,但这本质上是没有区别的。状态 f[i, j] 含义是以 i 为根... 阅读全文
posted @ 2015-05-05 13:03 xblade 阅读(163) 评论(0) 推荐(0)
摘要: 题目描述树的直径必然取自某个节点的两个(或一个)最深的子树,可以一遍DFS解决。#include #include #include using namespace std;vector tree[100005];bool has_parent[100005] = { false };int max... 阅读全文
posted @ 2015-05-05 09:01 xblade 阅读(127) 评论(0) 推荐(0)
2015年5月3日
摘要: 题目描述分治思想,递归求解。先建树再后序遍历:#include #include #include using namespace std;char pre[26], mid[26];typedefstruct _tree { char c; _tree *lc, *rc; _tree(char c... 阅读全文
posted @ 2015-05-03 23:19 xblade 阅读(124) 评论(0) 推荐(0)
摘要: 题目描述sum[i, j, s] 表示第 i 行第 j 个位置以前(第1到第 i 行,第 i 行第1列到第 j – 1 列)已经全部填满,在状态s的约束下要填满剩余位置的可行方案数。s 是压缩表示的第 i 和第 i + 1 行蛋糕放置状况,sj = (1 #include using namespa... 阅读全文
posted @ 2015-05-03 22:24 xblade 阅读(129) 评论(0) 推荐(0)
2015年4月29日
摘要: 题目描述这个题是想介绍状态压缩。其实这题的状态压缩并不难,因为需要记录的只是前面位置是否清扫,也即只有0、1两种状态,故使用一个bit位来记录一个位置。但是这题跟之前做的动归不同的地方是:之前的题目状态转移方程是f[i, j]可以由以前的状态算出;这个题状态转移方程是f[i, j]可以推出以后的几个... 阅读全文
posted @ 2015-04-29 20:32 xblade 阅读(142) 评论(0) 推荐(0)
2015年4月27日
摘要: 题目描述状态 f[i, j] 表示已经决定前 i 种物品的选取,总 need 不超过 j;状态转移方程 f[i, j] = max{f[i, j – need[i]] + val[i], f[i – 1, j]};结果的状态表示为 f[n, m]。注意状态方程与01背包的区别,这个区别反映了物品能取... 阅读全文
posted @ 2015-04-27 22:11 xblade 阅读(144) 评论(0) 推荐(0)
2015年4月26日
摘要: 题目描述状态 f[i, j] 表示已经决定了前 i 个物品的选取情况,总费用不超过j;状态转移方程 f[i, j] = max{f[i – 1, j], f[i – 1, j – need[i]] + value[i]};最终解的状态表示 f[n, m]。注意到状态转移只需用到上层的两个状态,所以可... 阅读全文
posted @ 2015-04-26 19:33 xblade 阅读(131) 评论(0) 推荐(0)
2015年4月25日
摘要: 题目描述动态规划的要素是“最优子结构”和“重叠子问题”。解决问题最重要的是确定“状态”的含义和“转移方程”,以及最终解的状态表示。对于本题而言:状态 —— V[i, j]这个状态表示从顶(第一层第一个元素)到第i层第j个元素能达到的最大值转移方程 —— V[i, j] = max(V[i-1, j-... 阅读全文
posted @ 2015-04-25 21:23 xblade 阅读(136) 评论(0) 推荐(0)
2015年4月24日
摘要: 题目描述Trie 图就是在 Trie 树上建立 fail 指针,类似于KMP算法中的next数组的作用。这个数据结构的作用是判断一个字符串中是否包含一组字符串中的任意一个。结构体定义是这样的:typedef struct trie_node { trie_node *nodes[26]; trie_... 阅读全文
posted @ 2015-04-24 18:20 xblade 阅读(189) 评论(0) 推荐(0)