摘要:   http://poj.org/problem?id=2159   题意万岁:判断两数组a、b中的所有数是否一样(一个数组是另一个数组的排列) 两种方法:     1、可以先排序再依次判断两数组元素,复杂度nlgn+n     2、由于此题中每个字符串的长度最大为100,则数组中的每个元素都不会超过100,那么... 阅读全文
posted @ 2010-11-05 18:23 Allen Sun 阅读(399) 评论(0) 推荐(0) 编辑
摘要:   http://poj.org/problem?id=2155   题目要求修改一个区域,然后求一个元素的值。貌似和树状数组的功能完全相反。但这题,应该 说这个思路的精妙之处就体现在这里。我认为关键是要理解“树状”的概念。画一个一维的树状数 组图形,就会发现所有的元素都会链接到2,4,8,16,32……这条“主干”上来。那么,修改了“主干”, 其实就相当于修改了整个“树... 阅读全文
posted @ 2010-11-05 16:59 Allen Sun 阅读(647) 评论(0) 推荐(0) 编辑
摘要:   http://poj.org/problem?id=2104 方法: 1、划分树,是平衡树:数组排序nlgn,建树nlgn,m次查询mlgn,总复杂度为O(nlgn+mlgn)      划分树就是利用类似线段树的树型结构记录划分元素(最终排序)的过程。      划分树是一种树形结构的二维数组,由四个... 阅读全文
posted @ 2010-11-05 16:55 Allen Sun 阅读(701) 评论(0) 推荐(0) 编辑
摘要:   http://poj.org/problem?id=1611 方法: 由于需要求得0元素所在划分的元素数,所以采用union by size的方法 将所有等价元素union到一起,然后再输出0元素所在划分的元素数 注意: union时需要事先判定两元素是否已经在同一个划分中,不然会出错 Description Severe acute respiratory syndrome (... 阅读全文
posted @ 2010-11-05 16:47 Allen Sun 阅读(297) 评论(0) 推荐(0) 编辑
摘要:   http://poj.org/problem?id=1606 方法: 该题简化之后即为求从初始状态(0,0)到终止状态(i,C)的最短路径 对于每个状态(i,j)存在由6种操作得到的6个邻接状态,即为图中的邻接节点 将每种操作和得到的节点状态对应上以便打印路径,即pathArr[6]和adjVertex[6] 注意: 此题的input无终止条件,所以一定要在scanf后面加上!=E... 阅读全文
posted @ 2010-11-05 16:45 Allen Sun 阅读(423) 评论(0) 推荐(0) 编辑
摘要:   http://poj.org/problem?id=1503   方法: 很简单,模拟手动加法过程, 结果中的前置0要消去   Description One of the first users of BIT's new supercomputer was Chip Diller. He extended his exploration of pow... 阅读全文
posted @ 2010-11-05 16:40 Allen Sun 阅读(364) 评论(0) 推荐(0) 编辑
摘要:   http://poj.org/problem?id=1426 方法: 找到n的倍数m,m中只能有0或1 0,1可构造出二叉树进行BFS搜索 该题的重点就在于如何构造出BFS进行搜索。 所有0,1组成的数可以构造出一颗二叉树从而进行BFS。每层的数字长度相同,每个节点的左右孩子为其末尾分别添加0,1 BFS搜索一颗二叉树。二叉树的节点按层序遍历依次为(1),(10,11),(100,... 阅读全文
posted @ 2010-11-05 16:37 Allen Sun 阅读(682) 评论(0) 推荐(0) 编辑
摘要:   http://poj.org/problem?id=1308 方法: 给定一些节点和对应边,判断他们所形成的图是否是树 技巧:类似于“并查集”的表示方法来表示树的结构 tree[1...49]初始为0。tree[i]表示i的父节点。 isNode[1...49]记录哪些编号的节点出现在图中 依次读入父节点p、子节点c和对应边,将isNode[p]和isNode[c]置位1,并赋值... 阅读全文
posted @ 2010-11-05 16:31 Allen Sun 阅读(562) 评论(0) 推荐(0) 编辑
摘要:   http://poj.org/problem?id=1195   方法: 简单的2D树状数组的应用 树状数组BIT形状很像二项树,适用于对经常改变的数组快速求得区间和。 采用树状数组tree[N]的话,每次调整与求和的复杂度为O(logN),效率大大提高。 介绍BIT的好文 http://www.topcoder.com/tc?module=Static&... 阅读全文
posted @ 2010-11-05 16:22 Allen Sun 阅读(329) 评论(0) 推荐(0) 编辑
摘要:   http://poj.org/problem?id=1163   方法: DP:将大问题转化为小问题解决。由递归写循环。 c[i][j]表示从a[1][1]开始到a[i][j]的最大和。而最终的结果为c[n][1...n]中的最大值 递归式为: c[1][1] = a[1][1] c[i][j] = max{ c[i-1][j-1], c[i-1][j] } + a[... 阅读全文
posted @ 2010-11-05 16:14 Allen Sun 阅读(432) 评论(0) 推荐(0) 编辑