这道题是delayyy拿来当例题给我们讲的,他讲得启发式合并,以外向边与点数的和为关键字(因为这是我们一次合并需要的代价),可以做到O(m+(n+k)log(n+k))O(m+(n+k)log(n+k))
但是。。显然这是一棵树嘛,一棵树的话你直接求LCA就好了,求LCA可以Tarjan做到O(n)O(n),从哪棵子树上来的可以在ufs里维护一下,然后把所有的点对按照询问给出的顺序插入就可以代替排...
分类:
其他好文 时间:
2015-05-26 09:14:53
阅读次数:
118
直接平衡树启发式合并就好了。。。貌似是个很高端的东西。。貌似可以证明splay的启发式合并是均摊$O(nlogn)$的。。。而其他平衡树都不行,所以其他的复杂度都是$O(nlog^2n)的$的所以就用平板电视里的splay好啦!2333 1 /****************************...
分类:
其他好文 时间:
2015-05-25 22:02:04
阅读次数:
168
好久没做题了,写道SBT又RE又T查询:主席树裸题。修改:对于两个树合并重建小的树。注意fa[x][i]重新计算时要清空#include #include #include #include using namespace std; inline int read() { char c=ge...
分类:
其他好文 时间:
2015-05-15 17:23:20
阅读次数:
549
不难...treap + 启发式合并 + 并查集 搞搞就行了----------------------------------------------------------------------------------------#include#include#include#include...
分类:
其他好文 时间:
2015-05-01 00:38:11
阅读次数:
299
Treap+启发式合并。依旧没什么需要用到脑子的。#include #include #include #include #include #include #define rep(i, l, r) for(int i=l; i pr[u]) Right(u); } else { if (!r[.....
分类:
其他好文 时间:
2015-04-21 22:11:08
阅读次数:
127
题解:
傻题随便上数据结构都能搞过。
可并堆或者启发式合并splay都可以。
考试时状态太差一个裸模板启发式合并splay调了3h最后还爆零了Qwq、
200行!!!!!!
然后可并堆又快又短,细节又少(然后特么也全都是模板内容,一点非模板代码都没有……),完虐启发式合并。
另外这道题可以用 f(i,j)f(i,j) 表示 从点 ii 到其第 2j2^j 个父亲需要的最小战斗力,这种做...
分类:
其他好文 时间:
2015-04-21 16:15:00
阅读次数:
226
注意输入v要在建根的前面。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 const int maxn = 1...
分类:
其他好文 时间:
2015-04-05 11:51:40
阅读次数:
141
DescriptionN个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2,2,1的四个布丁一共有3段颜色.Input第一行给出N,M表示布丁的个数和好友的操作次数. 第二行N个数A1,A2...An表示第i个布丁的颜色从第三...
分类:
其他好文 时间:
2015-03-12 20:48:24
阅读次数:
125
Description在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿。在这个帮派里,有一名忍者被称之为Master。除了Master以外,每名忍者都有且仅有一个上级。为保密,同时增强忍者们的领导力,所有与他们工作相关的指令总是由上级发送给他的直接下属,而不允许通过其他的方...
分类:
其他好文 时间:
2015-03-12 16:49:40
阅读次数:
226
平衡树+启发式合并+并查集 因为要求一坨数中第k大的……用平衡树会很好维护…… 但又要求连通块?所以用并查集来维护…… 大概就是让并查集的fa和Treap的根是同一个节点吧……TLE了N多发,可能是Treap的随机rank看脸的原因……QAQ唯一过了的一次是小号…… 1 /*********...
分类:
其他好文 时间:
2015-02-17 02:02:55
阅读次数:
195