摘要:
当然是可以用可持久化线段树/平衡树做的。不过这里记一下一种奇怪的方法:http://blog.csdn.net/kscla/article/details/53586880 如果用线段树来维护的话,线段树上非叶子节点的节点都是没有用的,因为并不需要它们记录值。因此可以建一棵二叉树,每一个节点表示原数 阅读全文
摘要:
记一下:线段树占空间是$2^{ceil(log2(n))+1}$ 这个就是一个线段树区间操作题,各种标记的设置、转移都很明确,只要熟悉这类题应该说是没有什么难度的。 由于对某区间set之后该区间原先待进行的取反操作失效(被覆盖),因此规定tag同时存在时set的标记先进行操作,这样对区间加上set标 阅读全文
摘要:
写的让人看不懂,仅留作笔记 静态主席树,相当于前缀和套(可持久化方法构建的)值域线段树。 建树方法:记录前缀和的各位置的线段树的root。先建一个"第0棵线段树",是完整的(不需要用可持久化的方法),所有数据为0。后面每一个位置的前缀和放的线段树都先设root与前一位置的线段树一样,然后再按照原序列 阅读全文
摘要:
-fno-elide-constructors 阅读全文
摘要:
2333? 先记一下吧,这题现在全部都是照着题解做的,因为怎么改都改不出来,只好对着题解改,以后还要再做过 以后再也不用指针了!太恶心了!空指针可不止直接特判那么简单啊,竟然还要因为空指针写奇怪的分类讨论! 没错,就是那个诡异的55和63行。由于要返回删除x后x所在树的新根,要分类讨论:如果x是根且 阅读全文
摘要:
Jewel Magic UVA - 11996 这是一道用splay/非旋treap做的题(这里用的是非旋treap) 1/2/3是splay/非旋treap的常规操作。对于操作4,可以用哈希法求LCP。记hash(i,L)为子串[i,i+L-1](即第i个开始的L个)的hash值。记s[i]为序列 阅读全文
摘要:
http://www.lydsy.com/JudgeOnline/problem.php?id=2323 根本想不到... 方法: get(i,j)表示第i到j个数字拼起来组成的数字ans[i][0/1]表示第一次分裂中,第i个数字之后断开,前i个数字第二次分裂后形成的最后一个二次分裂体否/是与其之 阅读全文
摘要:
错误记录:如下注释语句 1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 typedef long long LL; 5 LL log2n=19,cnt=1; 6 LL anc[400010][20],maxv[400 阅读全文
摘要:
2018-2-23改 1 #include<cstdio> 2 #include<cmath> 3 using namespace std; 4 namespace X 5 { 6 const double eps=1e-10; 7 struct Point 8 { 9 double x,y; 10 阅读全文
摘要:
Fools and Roads CodeForces - 191C 题意:给出一棵n个节点的树,还有树上的k条简单路径(用路径的两个端点u和v表示),对于树上每一条边,求出其被多少条简单路径经过。 方法: 一开始想了很久..想要在倍增求lca的同时统计边经过的次数..然而发现这样子可以统计,但是统计 阅读全文
摘要:
洛谷 P3380 【模板】二逼平衡树(树套树) 线段树套treap: 就是线段树每个节点放一个treap。建树复杂度应该是$n log n$,操作1,3,4,5的复杂度是$(log n)^2$,操作2的复杂度是$(log n)^3$。 操作3:找到线段树的对应叶子节点后找到要删除的值,在回溯的时候更 阅读全文
摘要:
如果按照http://www.cnblogs.com/hehe54321/p/loj-1031.html的$O(n^3)$做法去做的话是会T掉的,但是实际上那个做法有优化的空间。 所有操作可以分解为由两步组成的操作:第一步是在数列的某一端取一个数并加到自己的得分上,第二步是把下一步操作的权利给自己或 阅读全文
摘要:
http://blog.csdn.net/drazxlnddt/article/details/51051598 flip为true表示以当前节点为根的子树需要交换。set为true表示以当前节点为根的子树(包括自身)需要全部设为setv。 有个大坑:所谓和最大的子列最少有一个元素。有些操作可能对空 阅读全文
摘要:
先记一发非旋treap,splay什么的以后再说 基本就是正常的非旋treap维护序列加上一个flip标记,如果某个节点flip为true表示以它为根的子树需要一次翻转。类似线段树lazytag 每次可能要修改某个节点o的任意ch之前,都对o进行一次pushdown。(就是split和merge中) 阅读全文
摘要:
Permutation UVA - 11525 看康托展开 题目给出的式子(n=s[1]*(k-1)!+s[2]*(k-2)!+...+s[k]*0!)非常像逆康托展开(将n个数的所有排列按字典序排序,并将所有排列编号(从0开始),给出排列的编号得到对应排列)用到的式子。可以想到用逆康托展开的方法。 阅读全文