ICode9

精准搜索请尝试: 精确搜索
  • [BJOI2014]大融合2021-05-29 20:58:13

    嘟嘟嘟 好久没写LCT,真的忘了好多。 这道题是用lct维护子树大小。 众所周知,最基础的lct只能维护树链上的信息,而因为虚实边的划分导致不能直接维护子树信息。 所以对于每一个点,我们多维护一个变量\(si\),在这道题就表示这个点在原树上所有虚儿子的子树大小之和。 为了防止弄混,我用\(

  • BJOI2014 大融合2021-01-19 15:02:18

    保证初始所有点都孤立 保证连的边的端点在连这条边前不联通 即整个图一直都是森林。 先连好所有的边,定好每棵树的根。 这样,每次询问就是在树上的一条边 (fa[x], x), 答案是边两边连通块 size 的乘积。 fa[x] 那边的大小不好办, x 这边的正好是一个子树型的询问, 连通块总的 size 可

  • BJOI2014 大融合2020-03-08 16:56:23

    BJOI2014 大融合 LCT维护子树 这题要维护的是子树的大小,动态加边,用LCT维护 设\(sz_i\) 表示虚儿子的大小之和,\(sum_i\) 表示子树大小 考虑\(sz\)什么时候会变 access中,只有一个儿子由虚变实,有一个儿子由实变虚,加减一下就好了 link之后连了虚儿子,需要更新,注意这个时候两个点都必须

  • Luogu4219 [BJOI2014]大融合2020-01-01 10:54:06

    Link Solution 求两端点的子树大小然后相乘。 可以想到直接断边然后两边都\(makeroot\)一下。答案就是根节点的\(size\)。 但是怎么维护\(size\)呢?实子树大小可以直接由两个实儿子得到。但是虚子树不行。所以可以对每个点多维护一个\(sv[]\),表示这个节点的虚子树大小总和。 那么\(

  • bzoj 4530: [Bjoi2014]大融合【LCT】2019-04-17 20:51:05

    新姿势,一般来讲LCT只能维护splay重边里的数据,而这里要求维护整颗子树的size 多维护一个sq表示当前点轻儿子的size和,si表示包括轻重边的整颗子树的大小 然后需要改sq的地方是link和access,link是因为给y下面挂了个连着虚边的x点,所以给y的sq加上x的size;acc是改变了splay的结构,把一条实

  • P4219 [BJOI2014]大融合(LCT)2019-04-05 08:51:21

    P4219 [BJOI2014]大融合 对于每个询问$(u,v)$所求的是 ($u$的虚边子树大小+1)*($v$的虚边子树大小+1) 于是我们再开个$si[i]$数组表示$i$的虚边子树大小,维护一下就好辣 #include<iostream>#include<cstdio>#include<cstring>using namespace std;inline void Swap(int &a,int &b){a^=b

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有