POJ-3580-SuperMemo(splay的各种操作)】的更多相关文章

相应POJ题目:点击打开链接 SuperMemo Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 11309   Accepted: 3545 Case Time Limit: 2000MS Description Your friend, Jackson is invited to a TV show called SuperMemo in which the participant is told to play a…
题目连接 http://poj.org/problem?id=3580 SuperMemo Description Your friend, Jackson is invited to a TV show called SuperMemo in which the participant is told to play a memorizing game. At first, the host tells the participant a sequence of numbers, {A1, A…
题目链接:http://poj.org/problem?id=3580 Your friend, Jackson is invited to a TV show called SuperMemo in which the participant is told to play a memorizing game. At first, the host tells the participant a sequence of numbers, {A1, A2, ... An}. Then the h…
SuperMemo Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 6841   Accepted: 2268 Case Time Limit: 2000MS Description Your friend, Jackson is invited to a TV show called SuperMemo in which the participant is told to play a memorizing game.…
SuperMemo         Description Your friend, Jackson is invited to a TV show called SuperMemo in which the participant is told to play a memorizing game. At first, the host tells the participant a sequence of numbers, {A1, A2, ... An}. Then the host pe…
题意:让你维护一个序列,支持以下6种操作: ADD x y d: 第x个数到第y个数加d . REVERSE x y : 将区间[x,y]中的数翻转 . REVOLVE x y t :将区间[x,y]循环移位t次,如1 2 3 4 5 旋转2次后就变成4 5 1 2 3 . INSERT x p :在第x个数后面插入p . DELETE x :删除第x个数 . MIN x y : 查询区间[x,y]中的最小值 .思路:此题有反转区间和循环移位的操作,所以我们很容易可以想到用 splay FHQ_…
题意: 维护一个序列,支持如下几种操作: ADD x y D:将区间\([x,y]\)的数加上\(D\) REVERSE x y:翻转区间\([x,y]\) REVOLVE x y T:将区间\([x,y]\)向右循环平移\(T\)个长度 INSERT x P:在第\(x\)个元素后插入\(P\) DELETE x:删除第\(x\)个元素 QUERY x y:查询区间\([x,y]\)中的最小值 分析: ADD和REVERSE操作维护两个懒惰标记即可 REVOLVE操作本质还是CUT一段区间下来…
题意:对数组进行各种操作 其中 REVOLVE右移操作.将区间[a,b]右移c位 首先c可能比较多,可以先对区间长度取模. 在右移之后,可以发现[a,b]被分为两个区间[a,b-c]  [b-c+1,b],将后者插入到前者之前即可. // File Name: ACM/POJ/3580.cpp // Author: Zlbing // Created Time: 2013年08月10日 星期六 10时51分07秒 #include<iostream> #include<string>…
学完Splay的查找作用,发现和普通的二叉查找树没什么区别,只是用了splay操作节省了时间开支. 而Splay序列之王的称号可不是白给的. Splay真正强大的地方是他的区间操作. 怎么实现呢? 我们知道查找树的中序遍历是一个有序的序列.这个时候我们打破查找树左小右大的规则,而是把他的中序遍历作为我们的区间进行维护. 具体来讲有以下操作: 1.建树 2.区间操作[翻转.赋值啊什么的] 3.输出序列 建树 既然是区间,我们可以借鉴线段树的建树 void build(int& u,int l,in…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1890 题解:splay又一高级的功能,区间旋转这个是用线段树这些实现不了的,这题可以学习splay的旋转方法还有splay tree是按照中序来的,也就是说中序遍历后会得到原序列所以建树和线段树差不多稍微有点不一样.其实splay tree核心操作就是splay就是将某个点移到goal下面优化bst的操作. #include <cstdio> #include <iostream> #…