https://www.lydsy.com/JudgeOnline/problem.php?id=1588伸展树模板题 在这题里就是普通二叉树 只不过每次要把新插入的节点splay到根节点之下 可达到均摊nlogn 大概这就是充满玄学的局部性原理了。。线段树或者排序乱搞都可以#include <bits/stdc++.h>using namespace std;#de...
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3765模板题 熟悉基本操作每次收口袋之后 记得把口袋里的区间splay到根节点 否则慢的出奇#include <bits/stdc++.h>using namespace std;int getgcd(int a,int b);struct ...
http://poj.org/problem?id=3468在伸展树上打laz标记 和线段树略有不同 经过splay操作后 每个节点之下的子节点都是不断变化的 所以每个节点需要单独开一个变量记录本身的值#include <cstdio>#include <cstring>#include <algorithm>using namespace st...
http://poj.org/problem?id=3580伸展树的各种操作 收口袋大法好 一开始看模板上额外在维护数列的二叉树上又加了两个节点 root和root->ch[1] 觉得很蒙逼 但是这样保证了每次取前驱后继时不会越界 这两个节点的角色就相当于数组中的啊a[0]和a[n+1]题目很坑逼 数据范围不给 循环次数可能是负数还要注意longlong不能用max/min 必须...
http://acm.hdu.edu.cn/showproblem.php?pid=1890伸展树模板博客:http://dongxicheng.org/structure/splay-tree/#include <cstdio>#include <cstring>#include <algorithm>using namespace std;
http://acm.hdu.edu.cn/showproblem.php?pid=4453对一个循环序列进行操作 因为k1 k2都不会超过序列长度 所以指针不变时就是一些基本操作 当指针移动时可以当做区间交换 即进行三次区间翻转#include <cstdio>#include <cstring>#include <algorithm>usin...
http://acm.hdu.edu.cn/showproblem.php?pid=3487每次将要操作的区间收到口袋中 然后进行拆除 插入 翻转 注意拆除节点时 被拆节点的父指针要处理好 不然会影响splay操作时是按一字型还是之子型操作的#include <cstdio>#include <cstring>#include <algorithm>...
http://acm.hdu.edu.cn/showproblem.php?pid=3436伸展树离散化 将top和query查询的数存下来离散化 包括相邻两点中间产生的线段 并记录每个人在建树时对应的节点若把某个人放到第一个位置 先收口袋 这样可以避免删节点后对其子节点的处理 再对剩余序列第一个位置收口袋 然后插入即可看每个人在队列中的哪个位置 就把对应节点splay到根部 然后看左...
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号