zoukankan      html  css  js  c++  java
  • 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,被消费

  • 相关阅读:
    软件工程——第六章 软件测试【转】
    软件工程——第五章 程序编码【转】
    软件工程——第四章 面向过程的软件设计方法 【转】
    软件工程——第三章 软件需求分析 【转】
    软件工程——第二章 软件计划 【转】
    如何修改远程桌面的端口号
    关于导出Excel
    软件工程——第一章 软件和软件工程的基本概念【转】
    重构代码的7个阶段
    hibernate @JoinColumn
  • 原文地址:https://www.cnblogs.com/MouDing/p/12078319.html
Copyright © 2011-2022 走看看