上一页 1 ··· 6 7 8 9 10
摘要: 题面见这里 大概是个模板题 Treap暴力插入的做法太暴力了并不优美 这里就需要用到笛卡尔树的构造方法,定义见这里 在 假的O(n) 的时间内构造一棵Treap 把元素从小到大排序 这样从小到大插入时,只会往树上最右边的链上走 这样考虑一下 Treap 正常的 Insert 的过程: 只要找到第一个 阅读全文
posted @ 2018-05-23 19:58 EvalonXing 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 支持对历史版本进行操作的平衡树 Treap 和 Splay 都是旋来旋去的 这样平衡树可持久化听起来不太好搞? 还有 fhq_Treap ! 每次涉及操作就复制一个节点出来 操作历史版本就继承它的根继续往下搞 在 Split 和 Merge 里加上有关可持久化的操作即可 这里因为写了根据权值来分割的 阅读全文
posted @ 2018-05-22 09:17 EvalonXing 阅读(337) 评论(0) 推荐(1) 编辑
摘要: 可持久化版本的线段树 支持对历史版本的一些操作 每个版本对应一个根 这样也就相当于每个版本有一棵线段树 有信息被更改的节点就新建一个 没有则与原来的共用 线段树用来维护出现次数,所以一般都用到离散化 有了每个数字出现次数自然就可以查第 k 大了 那么区间第 k 大呢? 其实主席树大概是一个前缀和套线 阅读全文
posted @ 2018-05-21 22:46 EvalonXing 阅读(152) 评论(0) 推荐(1) 编辑
摘要: 1.普通Treap 通过左右旋来维护堆的性质 左右旋是不改变中序遍历的 #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<cctype> #include<cstdio> #incl 阅读全文
posted @ 2018-05-21 10:39 EvalonXing 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 1.普通Treap 通过左右旋来维护堆的性质 左右旋是不改变中序遍历的 这里有几点要注意一下: (1).由于写了内存回收,在 newnode 的时候要 memset 一下这个节点,因为可能被用过 (2).在删除时要这么写 : 如果只有小于等于1个儿子就直接删 2.fhq_Treap (非旋 Trea 阅读全文
posted @ 2018-05-20 21:51 EvalonXing 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 扩展欧几里得算法是当已知a和b时,求得一组x和y使得 首先,根据数论中的相关定理,解一定存在 //留坑待填 之后我们可以推一推式子 将a替换掉 展开括号 提出b,合并 且 设 现在已经将原来的式子转化为一个小一点的问题了 当 b = 0 时,则有 x = 1 , y = 0 之后递归回去就可以求得最 阅读全文
posted @ 2018-04-15 08:12 EvalonXing 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 概念: bitset 是用来存储位的(其中的元素只有两种形式) 这个类通常用来模拟一个布尔数组,但对空间分配上进行了优化:通常,每个元素只占用一个 bit ,而通常 char 类型是它的八倍 每个位置上的位都可以被单独访问:例如,对于一个给定的名为 foo 的 bitset,foo[3] 表示访问 阅读全文
posted @ 2018-03-16 16:37 EvalonXing 阅读(565) 评论(2) 推荐(2) 编辑
摘要: 1.高精简单操作 题面 高精,GCD,stein. 即 gcd(a,b)=2*gcd(a/2,b/2); gcd(a,b)=gcd(a/2,b); gcd(a,b)=gcd(a,b/2); 再用辗转相减套个高精就好 2.高精除int 题面 高精,katalan,组合数学. 即 暴力打表观察分析一下, 阅读全文
posted @ 2018-03-03 12:44 EvalonXing 阅读(431) 评论(0) 推荐(1) 编辑
摘要: 这篇主要是搬运了点课件大概有机会了会试着加进去一些有用的代码方面的小优化的 (前提: w位 代表 计算机位数) 1.逻辑运算符 二元逻辑运算符是短路的,即当表达式左边的值能确定表达式的值时就不会计算表达式右边的值 简单的if可用三目运算符代替,形如 可以嵌套,但套多了代码可读性就太差了,再出点错误可 阅读全文
posted @ 2018-03-02 16:06 EvalonXing 阅读(2058) 评论(2) 推荐(6) 编辑
摘要: 有关set的一些常用函数 1.begin() / end() 返回首/尾元素迭代器 2.rbegin() / rend() 返回尾/首元素反向迭代器,反向迭代器可以反向遍历容器的迭代器,从下面的程序已经可以看出,正常的迭代器++为顺序遍历,而反向迭代器的效果就是反向迭代器++后,可倒序遍历容器(-- 阅读全文
posted @ 2018-01-16 20:34 EvalonXing 阅读(2101) 评论(0) 推荐(2) 编辑
上一页 1 ··· 6 7 8 9 10