题目链接:hdu 1540 Tunnel Warfare
题目大意:有连续的N个城镇,三种操作:
D x:第x城镇被破坏Q x:插叙第x城镇所在联通块有多少个城镇没有被破坏R:修复最后一个被破坏的城镇
解题思路:线段树区间合并,每个城镇看成一个叶子节点,用一个vector记录破坏顺序。对于查询来说,每次只要判断是否在mid?R[lson(u)],mid+L[rson(u)]之间即...
分类:
其他好文 时间:
2014-10-03 13:05:44
阅读次数:
256
题意:给出一个标准2-3树的叶子节点(最底层节点)个数 L,求2-3数的形成方案数并取余分析:如果有L个叶子枚举每个可以使x*2+y*3=L的xy 那么在最底层就有c(x+y,x)种2,3的放法上一层就是有x+y个叶子的子问题这样就可以递推算了枚举时首先注意到 x=L y=-L 是一组特解,因此可以...
分类:
其他好文 时间:
2014-10-03 10:26:04
阅读次数:
201
题目见here
题意:给一个序列arr[],你从中选择一些子序列,将子序列的值从左往右依次放到某棵二叉树的叶子节点上,使得除了叶子,所有节点左右子树权和相等。子树的权和 = 子树叶子的权和。如果存在这样一棵二叉树,选择的子序列就是合法的。问,最长的合法子序列是多少。
思路:
枚举二叉树可能的叶子的最小权(入手点),显然,能和此数一起组成二叉树的数,要么和这个数相等,要么是这个数的2^k倍。把...
分类:
其他好文 时间:
2014-10-03 02:05:43
阅读次数:
259
堆排序分为两个过程:1.建堆。堆实质上是完全二叉树,必须满足:树中任一非叶子结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字。堆分为:大根堆和小根堆,升序排序采用大根堆,降序排序采用小根堆。如果是大根堆,则通过调整函数将值最大的节点调整至堆根。2.将堆根保存于尾部,并对剩余序列调用调...
分类:
编程语言 时间:
2014-10-03 00:28:23
阅读次数:
255
转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents当中有文字系转载!区间更新是指更新某个区间内的叶子节点的值,由于涉及到的叶子节点不止一个,而叶子节点会影响其对应的非叶父节点,那么回溯须要更新的非叶子节点也会有非常多,假设一次性更新完,...
分类:
其他好文 时间:
2014-10-02 19:15:05
阅读次数:
126
线段树(interval tree) 是把区间逐次二分得到的一树状结构,它反映了包括归并排序在内的很多分治算法的问题求解方式。
上图是一棵典型的线段树,它对区间[1,10]进行分割,直到单个点。这棵树的特点
是:
1. 每一层都是区间[a, b]的一个划分,记 L = b - a
2. 一共有log2L层
3. 给定一个点p,从根到叶子p上的所有区间都包含点p,且其他区间都不包...
分类:
其他好文 时间:
2014-10-02 09:14:52
阅读次数:
196
题意:一棵树,俩种操作:1 有路径上的所有点加vi,2所有边加vi。
先离线求出所有询问的lca,再遍历询问一次,点+vi,lca-2*vi ,最后dfs从叶子扫上来一次,最后再祖先点补上即可。用了输入挂。复杂度(n+m).
#pragma comment(linker,"/STACK:10240000000000,10240000000000")
#include
#include
#in...
分类:
其他好文 时间:
2014-10-01 13:08:21
阅读次数:
160
索引是建立在表的一列或多个列上的辅助对象,目的是加快访问表中的数据;
Oracle存储索引的数据结构是B*树,位图索引也是如此,只不过是叶子节点不同B*数索引;
索引由根节点、分支节点和叶子节点组成,上级索引块包含下级索引块的索引数据,叶节点包含索引数据和确定行实际位置的rowid。
使用索引的目的:
加快查询速度
减少I/O操作
消除磁盘排序
...
分类:
数据库 时间:
2014-09-30 18:33:29
阅读次数:
283
第一种方法是Morris Traversal
是O(n)时间复杂度,且不需要额外空间的方法。缺点是需要修改树。
通过将叶子节点的right指向其中序后继。
代码如下
vector inorderTraversal(TreeNode *root) {
vector res;
TreeNode * cur = root;
TreeNode...
分类:
其他好文 时间:
2014-09-27 22:46:50
阅读次数:
195
完全二叉树:一棵具有N个节点的二叉树的结构与满二叉树的前N个节点的结构相同
如何判断一个树是完全二叉树
可以使用层序遍历,只需2个步骤
第一步:如果遍历到一个节点只有右子树没有左子树,则不是完全二叉树
第二部:如果遍历到一个节点只有左子树,那么后面遍历到的节点必须是叶子节点,否则也不是完全二叉树
排除以上两种情况,则树是完全二叉树
核心代码:
//层序遍历
int L...
分类:
其他好文 时间:
2014-09-27 21:59:03
阅读次数:
401