主要操作为Splay中插入节点,查找前驱和后继节点。 1: #include 2: #include
3: #include 4: using namespace std; 5: #define MaxL 100005 6: #define INF
0x7ffffff 7: #define keyT...
分类:
其他好文 时间:
2014-05-01 14:16:03
阅读次数:
633
这道题需要注意的地方有以下一些:1.
求从子树中的某节点到当前节点的最大路径不能采用递归方法,因为这个部分会被反复的调用,如果用递归,会使得之前已经计算过的节点被重复计算,使得时间复杂度特别高;2.
树中有节点的值是负数的。下面是AC代码。(我发现AC并不代表代码真的完全正确!!) 1 /** 2 ...
分类:
其他好文 时间:
2014-05-01 12:10:52
阅读次数:
274
[cpp]view plaincopy为树形控件添加弹出式菜单,并跟踪所选择的项[cpp]view
plaincopy动态弹出式菜单[cpp]view
plaincopy//获取当前右键的位置CPointpt;GetCursorPos(&pt);m_tree.ScreenToClient(&pt);...
分类:
其他好文 时间:
2014-05-01 02:45:10
阅读次数:
341
要不是为了写splay的区间旋转的下放,我才不会写线段树的lazy下放来练练手(我原来的lazy都是跟着函数走的。。)这个时候我们得对lazy进行重新的界定,那就是lazy对当前节点是不产生影响的,而是对它的儿子产生影响。也就是说,当我到了某一个[l,r]区间,我不仅要更新它的lazy值,还要更新本...
分类:
其他好文 时间:
2014-04-30 23:44:18
阅读次数:
426
题目大意:
两个操作
1 id op 把id的位置+op
2 id op 查询在【id,op】之间的所有的数的差
思路:
关键是pushup函数。
自己退一下会发现,跟区间的总和,区间的节点个数有关。
比如如果左区间是 1 2 的话
右区间来一个 9
那么
就要加上
9-1+9-2
#include
#include
#include
#incl...
分类:
其他好文 时间:
2014-04-29 13:44:22
阅读次数:
475
分布式消息系统Jafka入门指南之二作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs三、Jafka的目录结构1、安装tree命令$ sudo yum install tree2、查看目录$ tree -L 1
.
?..?? bin
?..?? conf
?..?? data
?..?? lib
?..?? LICENSE
?..?? logs
?..?...
分类:
其他好文 时间:
2014-04-29 13:38:21
阅读次数:
448
在红黑树基础上设计map容器,在设计map时,可以明显利用的map模板类中KEY,VALUE,KEYOFVALUE的灵活运用
不多说,代码如下:
//my_map.h
#ifndef MY_MAP_H_INCLUDED
#define MY_MAP_H_INCLUDED
#include //for pair
#include"my_rb_tree.h"
using std::pair;...
分类:
其他好文 时间:
2014-04-29 13:27:21
阅读次数:
443
set容器是以红黑树容器为基础实现的,在其基础上稍加改变接口即可
#ifndef MY_SET_H_INCLUDED
#define MY_SET_H_INCLUDED
#include"my_rb_tree.h"
namespace juine
{
template
struct identity
{
const T& operator()(cons...
分类:
其他好文 时间:
2014-04-29 13:16:20
阅读次数:
376
预处理每个结点的子结点的个数sons , 则对x的询问可由sons[x]- sigma( sons[v] ) (v是到x距离为d的点)得到
怎么快速的找到这些v呢? 注意到距离x为d的点肯定在树的同一层....
可以对树进行dfs时记录每个结点时间戳的同时把每一层的结点保存下来,然后对每一层维护一个前缀和 如果v是x下面子结点那么v的时间戳肯定在x的范围内,这样就可以二分確定出前缀和的范围了....
分类:
其他好文 时间:
2014-04-28 10:34:42
阅读次数:
434
伸展树模版真的好长好长。。。
cut a b c:把第a-1个数伸展到根节点,把第b+1个数伸展到a的右子树,然后把ch[ch[root][1][0]]拿掉,放在剩下的树的第c个节点下。
flip a b:把第a-1个数伸展到根节点,把第b+1个数伸展到a的右子树,然后翻转ch[ch[root][1][0]];
由于会出现操作两边的情况,所以加了两个-1节点。
注意:
1,输出的时候要注...
分类:
其他好文 时间:
2014-04-27 22:31:19
阅读次数:
295