zoukankan      html  css  js  c++  java
  • 省选模拟11 题解

    A. 组合数问题

    还没想明白如何做,待补。

    B. recollection

    因为原图为trie树,树上两个点的lcp长度等于两个点的lca深度。

    考虑通过广义sam来维护两个点的lcs。

    树上同时对应着一个$endpos$,树上两个点对应的$endpos$对应的广义sam上节点在后缀树的lca的$len$即为两个点的lcs长度。

    所以对于原树上每个点,我们只关注它的子树在后缀树上能形成的$len$最大的lca。

    树上$n$个点形成的lca集合,实际上等于dfs序上相邻的两点形成的lca集合。

    所以用线段树合并/启发式合并set都可以解决这个问题。

    C. comparison

    题中给出的比较方式为一种偏序,也就是说该比较方式是具有传递性的。

    由于只涉及到在父亲位置加点的操作,可以发现新加点不会影响原集合的排名。

    所以可以通过中序遍历为排名遍历的平衡树,查找排名确定大小关系。

    考虑新插入一个点,按照往常的思路在平衡树上二分是不可行的。

    因为我们确定排名的方式是比较儿子,而儿子也在平衡树上,较难处理。

    另一个思路是直接二分插入位置,将第$k$大的节点抽离出来。

    通过splay标号与原序列标号的一致,可以直接对要比较的子节点执行splay操作,查找排名确定大小关系。

    一个处理相等的方法是使用并查集维护。

  • 相关阅读:
    如何快速给pod添加健康检查?
    如何快速下载vagrant的box?
    如何快速新建sql的demo环境?
    如何快速将某个用户添加sudo免密以及docker权限?
    七、Docker+nginx
    六、Docker+Gitlab
    五、Docker+Sqlserver
    四、Docker+Tomcat
    Docker 内程序时间设置,很重要
    三、Docker镜像的相关操作
  • 原文地址:https://www.cnblogs.com/skyh/p/12241378.html
Copyright © 2011-2022 走看看