随笔分类 -  数据结构--平衡树

摘要:https://codeforces.com/problemset/problem/455/D 其实方法很多,然而当初一个也想不到... 1.分块,块内用链表维护 修改[l,r]就当成删除第r个元素,在第l个元素之前插入删掉的元素:就找到r删除,然后调整各个块的结构(对于[block[l]+1,bl 阅读全文
posted @ 2018-10-23 19:42 hehe_54321 阅读(423) 评论(0) 推荐(0)
摘要:https://vjudge.net/problem/HDU-4680 一直想写,终于写完了。。。 要点: 这个set不需要去重 操作4的做法就是暴力枚举取的数(最开始两个取set中最小两个,设这次取的值为now,前一次取的值为last,那么下次要取大于等于now+last的最小数),由于每一次取的 阅读全文
posted @ 2018-07-24 20:56 hehe_54321 阅读(242) 评论(0) 推荐(0)
摘要:码力不行啊。。。 错误记录: 171行后面对find2的使用错误,原来写的是p=find2(rt,p1),然后再加上一句能过样例但很假的特判 事实上,现在是要寻找最大的j,使得d2[1..j-1]=p1-1 而find2返回的是最大的j,使得d2[1..j]<=p1,因此要这么用 错误记录: 171 阅读全文
posted @ 2018-07-24 09:41 hehe_54321 阅读(189) 评论(0) 推荐(0)
摘要:https://www.luogu.org/problemnew/show/P3960 常数超大的treap 阅读全文
posted @ 2018-07-09 09:17 hehe_54321 阅读(148) 评论(0) 推荐(0)
摘要:http://codeforces.com/problemset/problem/915/E 大概有几种思路: 1.动态开点线段树+标记下传 #1.1标记永久化:想了一会没想出来 1.2可以先扫一遍询问把所有需要的点建出来,然后pushdown就不管没建出来的点了,空间跟标记永久化一样 2.离散化+ 阅读全文
posted @ 2018-05-11 18:29 hehe_54321 阅读(215) 评论(0) 推荐(0)
摘要:看到这题,第一眼:平衡树水题,随便做一做好了 然后....我在花了n个小时去调试(维护平衡树父节点)之后,... 调了三个小时后,第一次失败的代码(只能查找排名为k的用户编号,不能根据编号查排名) #include<cstdio> #include<algorithm> #include<queue 阅读全文
posted @ 2018-03-12 21:33 hehe_54321 阅读(343) 评论(0) 推荐(0)
摘要: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]为序列 阅读全文
posted @ 2018-02-27 20:47 hehe_54321 阅读(231) 评论(0) 推荐(0)
摘要:洛谷 P3380 【模板】二逼平衡树(树套树) 线段树套treap: 就是线段树每个节点放一个treap。建树复杂度应该是$n log n$,操作1,3,4,5的复杂度是$(log n)^2$,操作2的复杂度是$(log n)^3$。 操作3:找到线段树的对应叶子节点后找到要删除的值,在回溯的时候更 阅读全文
posted @ 2018-02-09 22:13 hehe_54321 阅读(287) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/drazxlnddt/article/details/51051598 flip为true表示以当前节点为根的子树需要交换。set为true表示以当前节点为根的子树(包括自身)需要全部设为setv。 有个大坑:所谓和最大的子列最少有一个元素。有些操作可能对空 阅读全文
posted @ 2017-12-02 15:57 hehe_54321 阅读(436) 评论(0) 推荐(0)
摘要:先记一发非旋treap,splay什么的以后再说 基本就是正常的非旋treap维护序列加上一个flip标记,如果某个节点flip为true表示以它为根的子树需要一次翻转。类似线段树lazytag 每次可能要修改某个节点o的任意ch之前,都对o进行一次pushdown。(就是split和merge中) 阅读全文
posted @ 2017-12-01 22:28 hehe_54321 阅读(297) 评论(0) 推荐(0)
摘要:Permutation UVA - 11525 看康托展开 题目给出的式子(n=s[1]*(k-1)!+s[2]*(k-2)!+...+s[k]*0!)非常像逆康托展开(将n个数的所有排列按字典序排序,并将所有排列编号(从0开始),给出排列的编号得到对应排列)用到的式子。可以想到用逆康托展开的方法。 阅读全文
posted @ 2017-11-25 17:06 hehe_54321 阅读(375) 评论(0) 推荐(0)
摘要:由于有相同的数,每个节点加一个权值表示此数出现的次数 本来想写成相同的数分成多个节点放的,写了一会儿各种细节,炸了 1 #include<cstdio> 2 #include<cstdlib> 3 #include<ctime> 4 #include<algorithm> 5 using names 阅读全文
posted @ 2017-11-18 14:43 hehe_54321 阅读(265) 评论(0) 推荐(0)

AmazingCounters.com