摘要:
区间操作的究极题,我们一个个来分析其实只有insert,delete,revolve三种没讲过insert 先把x旋到根,一开始我比较SB的,准备把新节点插入到右子树的最左节点,这显然很烦 好的方法是,直接在根和右孩子之间插入即可,相当于right[new]=right[root] ri... 阅读全文
posted @ 2015-01-09 22:02
acphile
阅读(132)
评论(0)
推荐(0)
摘要:
这道题相比较bzoj3223只不过多了一个区间加上一个数,这显然还是类似的和线段树经典的打标记类似 1 const inf=-2147483647; 2 sroot=-1; 3 var son:array[-1..50010,1..2] of longint; 4 fa,... 阅读全文
posted @ 2015-01-09 21:42
acphile
阅读(132)
评论(0)
推荐(0)
摘要:
很久没写splay了,这是用splay解决动态区间问题平常splay树的建立都是以键值建立的而这里是以位置序号为优先级建立的不难发现,tree上的点代表的位置就是它的名次splay的区间操作最重要的一点就是提取区间设提取区间[a,b],则我们只要代表位置a-1的点伸展到根,再把代表位置b+1的点伸展... 阅读全文
posted @ 2015-01-09 21:40
acphile
阅读(130)
评论(0)
推荐(0)
摘要:
trie树最基本的应用了不难得到f[i]=f[j] if (s[j+1~i]∈dictionary);可以用trie树匹配 1 var can,f:array[0..1000010] of boolean; 2 son:array[0..1000010,1..26] of longint; ... 阅读全文
posted @ 2015-01-09 21:27
acphile
阅读(125)
评论(0)
推荐(0)
摘要:
观察发现,这道题目其实就相当于一个最小区间覆盖问题这里的区间是指以每个点为中心的最长回文串很久没写manacher,有点感动不得不说manacher是一个非常好的算法 1 var s:array[0..100010] of char; 2 c,l,r,f,p:array[0..10001... 阅读全文
posted @ 2015-01-09 21:23
acphile
阅读(202)
评论(0)
推荐(0)
浙公网安备 33010602011771号