LCT小结

挺懵的,题大概赶上了但是还是感觉理解不够。

交互题真好玩hhhh

 

一,板子

  对不起我太懒了

 

二,题解包

  《洞穴勘测》:考察联通性的板子题

  《树的维护》:考察边化点和标记的下传以及灵活运用

  《tree》:标记的先后顺序

  《水管局长》:$lct$维护最小生成树,无法删边,所以考虑时光倒流

  《情报传递》:这题是主席树的题hhhh

  以上都可能比较水所以不合各位的胃口
  

  《GERALD07加强版》:运用了联通块==点数-边数

              但只适用于森林,所以考虑如何干掉环。

              看到区间所以考虑主席树,$lct$用来预处理,我们只需要这个区间中有用的边有多少。

              维护一个数组$pre$,代表第$i$条边可以代替的最早的边的编号。

              特别的,自环边的$pre$设为自己。

              然后用主席树维护$pre$,对于每个询问查询$(x,y)$即可得到无用边数。

  《魔法森林》:答案是$a+b$。然后发现可以枚举$a$,接下来维护最小生成树即可。

  《在美妙的数学王国中畅游》:$lct$板子+数学知识,个人认为$lct$是次要的,起辅助作用。

                主要考察泰勒展开将函数转化成多项式。

  《LCA》:无法一次求出多个$lca$所以我们考虑将深度柿子换掉。

       不会倍增$lca$时,我们考虑求$lca(x,y)$时会将$y$暴力上抬然后打标记,再将$x$上抬第一个遇到的就是$lca$。

       再想想深度,$d[x]$就是$x$到根的路径上点的个数。

       也就是说,每一个点$i$所做的贡献,就是在它下面的$lca$的个数。

       转化一下问题,变成“给定$l$,$r$,$x$,将$[l,r]$区间里的节点到根路径上的点权值$+1$,求$x$到根节点路径上的权值和”。

       为了不让在$[l,r]$区间外的点做贡献,转化成差分形式即$[1,r]-[1,l-1]$,即可用$lct$维护。

       但不知道为什么我的lct写法需要将左端点为$1$的情况判掉。

       今天早上我懵逼了将近三个小时,脑子里面一团浆糊。

  《即时战略》:做过的第一道交互题

         根据数据范围可知树形的探索次数是$nlog$的,链的是$n$的。

         链:维护最左端和最右端然后爆跳即可,期望错误次数是$log$但我不会证

         树:用$lct$维护,然后在$splay$上二分。这个理解了半天。。。

           大概就是是前驱走左儿子,是后继走右儿子,到过就直接跳根,没到过新建并连虚边。

   

三,总结  

  1,做题将可行方案列出一个个考虑周全

  2,要学会运用之前见过的性质和结论

  3,做好一个蒟蒻该做的事,尽量赶进度

  4,被消费

上一篇:【算法学习笔记】倍增求最近公共祖先(LCA,非战斗机)


下一篇:LCA