数据结构
Devil_Gary
这个作者很懒,什么都没留下…
展开
-
BZOJ3673 可持久并查集
可以用线段树维护 每个叶子结点存它父亲的位置 查一个点的父亲和正常并查集差不多 记录每个点的深度 当要相连的两个点深度相同时 (p,q) 把q的deep++ 整体用主席树维护 copy hzwer的 Orz#include<cstdio> #include<iostream> using namespace std; inline int read() { int x=0;char原创 2017-10-16 15:14:54 · 575 阅读 · 0 评论 -
非旋Treap 学习笔记
今天学习了一下非旋TreapTreap 听说效率很高而且可持久化(一脸懵逼QAQQAQ) 非旋Treap主要是两个操作splitsplit和mergemerge 下面简单描述一下(得先会TreapTreap啊 ) valval:点的值 keykey:randrand的值 splitsplit : 就是我们把原TreapTreap拆成两个TreapTreap x,y x,y 比如以valu原创 2018-01-10 15:32:16 · 422 阅读 · 0 评论 -
BZOJ5137[Usaco2017 Dec]Standing Out from the Herd
看了半天题 不知道怎么用SAM维护 于是借(chao)鉴(xi)的一发神犇的 只要判断这个子串之前被标记的记号(也就是他属于第几个串)和这次转移到的是否相同 如果不同就说明该子串属于多个串 直接标记-1 依次转移就好咧 最后统计就是ans[f[i]]+=sam[i].mx−sam[par[i]].mx;f[i]ans[f[i]]+=sam[i].mx-sam[par[i]].mx; f[i]就是原创 2018-01-12 18:18:40 · 561 阅读 · 0 评论