大二上的时候,写过一个AVL的操作演示,今天一看Splay,发现和AVL其实一样,加上线段树的基础,懒惰标记什么都知道,学起来轻松许多哦
我参考的模板来自这里 http://blog.csdn.net/u013480600/article/list/2
里面有大量的ch[r][0] ch[r][1]等 我建议用宏定义取代,写的时候方括号少打了很多,等做的题多得时候,我再把自己使用的模板发来
...
分类:
其他好文 时间:
2014-07-30 17:43:44
阅读次数:
263
线段树结点上保存一个一般的sum值,再同时保存一个fbsum,表示这个结点表示的一段数字若为斐波那契数时的和
当进行3操作时,只用将sum = fbsum即可
其他操作照常进行,只是单点更新的时候也要先向下更新
#include
#include
#include
#include
#include
#include
#include
#include
#includ...
分类:
其他好文 时间:
2014-07-30 17:33:24
阅读次数:
153
Problem Description
Recently, Doge got a funny birthday present from his new friend, Protein Tiger from St. Beeze College. No, not cactuses. It's a mysterious blackbox.
After some research, Doge...
分类:
其他好文 时间:
2014-07-30 17:27:44
阅读次数:
282
题目链接:http://poj.org/problem?id=2182
Lost Cows
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 9152
Accepted: 5879
Description
N (2 <= N <=...
分类:
其他好文 时间:
2014-07-30 14:52:24
阅读次数:
249
1.HDU 1166 http://acm.hdu.edu.cn/showproblem.php?pid=1166题目大意:了解地方的兵营人数,每次询问告知区间内的总人数,其中会有兵营人数变更的更新操作这里要用到求和的query:int query(int x,int y){ int i=D+x-1...
分类:
其他好文 时间:
2014-07-30 14:41:03
阅读次数:
254
HDU 1754 单点更新,区间查询最大值,水题……
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define mem(a,b) memset(a,b,sizeof(a))
#define lson i<<1,l,mid
#define rson i<<1|1,mid+1,r...
分类:
其他好文 时间:
2014-07-30 12:23:33
阅读次数:
252
题意:有n个数初始值都为1,m个操作a,b,c,表示把区间[a,b]变为c,求最后n个数的和。
经典区间更新求和问题,需要用到延迟标记(或者说是懒惰标记),简单老说就是每次更新
的时候不要更新到底,用延迟标记使得更新延迟到下次需要更新或询问的时候。
#include
#include
#include
#include
#include
#include
#inclu...
分类:
其他好文 时间:
2014-07-30 12:20:23
阅读次数:
241
poj3468 裸线段树。因为在熟悉splay 所以就用splay交了一发。。。开始用的scanf()!==2 居然TLE了。。。然后我就当单组测试数据做的 然后就过了 囧TZ #include #include #include #include #include #include using n...
分类:
其他好文 时间:
2014-07-30 12:12:03
阅读次数:
278
HDU 1166【题意】:n个阵营一字排开,每个初始有a[i]个人。现有两种操作:Q a b 查询[a,b]之间总人数并输出A/S a b 在a号位添加/删除b个人【分析】:最基本的单点更新和区间查询,维护节点信息sum[o]【代码】: 1 #include 2 #include 3 #incl.....
分类:
其他好文 时间:
2014-07-30 11:56:23
阅读次数:
450
题意:给你一个序列,找两个长度为 k 且没有重合区间的数使得其和最大解题思路:1)线段树想了半天想不出只能先用线段树撸了一发,这题dp 第一名只要了 9分钟。就是把起点为 i 长度为 k 的和预处理出来,再用线段树枚举去找。解题代码: 1 // File Name: 332b.cpp 2 // .....
分类:
其他好文 时间:
2014-07-30 11:46:03
阅读次数:
373