
lct
Rayment_cc
++Rp
展开
-
BZOJ 2843 极地旅行社
Problem BZOJ Solution lct。 建桥就是判一下findroot是否相等,不相等就link。 修改:先把自己的val更新,然后access更新标记,splay下放标记。 询问:先makeroot,再access一下就可以得到x,y的辅助树,然后splay之后输出sz[y]就是答案。 值得注意的是access操作的时候要pushup。 也有更优的做法,注意到只...原创 2018-04-08 22:05:50 · 331 阅读 · 0 评论 -
BZOJ3626 LNOI2014LCA
Problem BZOJ Solution 就是给定询问l,r,z求∑ri=ldeep(lca(i,z))∑i=lrdeep(lca(i,z))\sum_{i=l}^r deep(lca(i,z)) 我们考虑把deep的含义转化一下,它就是表示某个点到根节点需要经过几个节点 那么把路径上的deep差分之后就变成了一条1,然后我们做一个区间询问和即可得到deep 那么我们就用这种思想...原创 2018-06-04 22:37:20 · 375 阅读 · 0 评论 -
UOJ207 共价大爷游长沙
Problem UOJ Solution 这道题可以维护子树hash值来做。这个hash函数要求仅与各个数的值有关。 如果边(x,y)在所有的路径上,那么我们可以认为在子树x/y中,hash值是要等于某个值的(这个值我们可以维护总的hash值)。而一个比较好的hash就是异或和,为了不冲突我们可以用2的幂来赋值,但注意到路径可能比较多,所以直接rand一个大数,冲突的概率也是比较小的。...原创 2018-06-08 21:52:15 · 437 阅读 · 1 评论 -
BZOJ4025 二分图
Problem BZOJ Solution 关于二分图的判定,我们可以考虑原图的一个生成树,然后对于所有非树边,我们统计一下奇环个数即可 然后可以用时间线段树,带权并查集维护一下路径上的点的个数,时间复杂度是O(mlogTlogn)O(m\log T\log n)O(mlogTlogn) 也可以用lct维护时间最大生成树,注意一下细节即可,时间复杂度是O(mlogn)O(m\log n)O(...原创 2018-12-05 20:45:55 · 280 阅读 · 0 评论 -
LOJ6041 雅礼集训2017Day7 事情的相似度
Problem loj Solution 月底写来凑数的文章 两个前缀的最长后缀长度就是在SAM上的len[lca],那么问题就变成了求编号在 [L,R][L,R][L,R] 内的两个节点的最深lca 我们可以考虑离线,枚举 rrr 并维护各个 lll 的答案。从 r−1r-1r−1 转移到 rrr,就是要加入 rrr 点的贡献。我们可以暴力跳 rrr 的祖先,在每个节点上记录其子树内已加入的最大...原创 2019-04-30 16:57:12 · 399 阅读 · 0 评论