题意:给你个点m条边的无向图,每个节点都有一个整数权值。你的任务是执行一系列操作。操作分为3种。。。思路:本题一点要逆向来做,正向每次如果删边,复杂度太高。逆向到一定顺序的时候添加一条边更容易。详见算法指南P235。 1 #include 2 3 struct Node 4 { 5 ...
分类:
其他好文 时间:
2015-12-24 22:03:48
阅读次数:
348
BST就是二叉检索树,或者是二叉排序树,或者叫二叉搜索树等等。 BST的平衡问题可以去学习AVL树或者Treap或者Splay这些平衡树。 BST的一些高级应用: 1,求BST中比k小的数的个数: 只需在BST上面多维护值size,表示当前这个节点的子树的点的个数。 伪代码如下: 1 ...
分类:
其他好文 时间:
2015-12-22 16:08:41
阅读次数:
175
这个是第一份完整的treap代码。嗯。。。虽然抄的百度的版,但还是不错的。!bzoj上不能用srand。#include#include#include#includeusing namespace std;struct treap{ int left,right,value; int fix,w,...
分类:
其他好文 时间:
2015-12-13 18:42:48
阅读次数:
229
Treap标准学习模板1.treap的基本了解(1)splay与treap的区别Splay的旋转操作是将普通节点转到根
而treap是将根转为普通节点(2)treap的时空复杂度treap的各项操作时间复杂度均摊为O(logn)。
由于treap的指针写法容易出错,所以通常用数组代替。
通常要有以下几种:
v[]——存放键值
rnd[]——存放随机出的优先级
l[],r[]——左右子树的...
分类:
其他好文 时间:
2015-12-05 11:22:24
阅读次数:
273
inputT 1 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #define...
分类:
其他好文 时间:
2015-12-04 20:37:51
阅读次数:
140
模板题 bzoj3224普通平衡树 功能齐全的模板题 1 #include 2 #define maxn 100005 3 struct node{ 4 int l,r,v,rnd,w,size; 5 }tr[maxn]; 6 int root,size,ans; 7 void ...
分类:
其他好文 时间:
2015-12-04 14:33:08
阅读次数:
175
1 #include 2 #include 3 #include 4 #define rep(i,j,k) for(int i = j; i size; 36 if( ch[1] != NULL ) size += ch[1] -> size; 37 } 38 39 }; 40 ...
分类:
其他好文 时间:
2015-11-28 22:58:09
阅读次数:
337
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1588又是一道Treap模版题……总做模版题不好……另外牢记:BZOJ上用srand(time(0))会RE! 1 #include 2 #include 3 #include 4 #i...
分类:
其他好文 时间:
2015-11-26 23:01:44
阅读次数:
131
一、斜堆斜堆是一种可以合并的堆节点信息:struct Node { int v; Node *ch[2];};主要利用merge函数Node *merge(Node *x, Node *y) { if(!x) return y; if(!y) return x; if(...
分类:
其他好文 时间:
2015-11-25 23:22:07
阅读次数:
334
嗯 贴下代码 方便以后来看treap : tyvj 普通平衡树 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 8 using namespace std; 9 10 void setIO(...
分类:
其他好文 时间:
2015-11-18 12:19:52
阅读次数:
242