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操作,查找排名确定大小关系。

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

  • 相关阅读:
    关于读者来信的一些思考
    serializeArray()与serialize()的区别
    懒人代码-顶部栏
    $.ajax()方法详解
    JavaScript(js)对象常用操作,JS操作JSON总结
    js 获取手机浏览器类型,修改css文件的class的值
    阻止在极短的时间重复执行某个函数
    android WebViewClient和WebChromeClient
    java枚举使用详解
    android-async-http
  • 原文地址:https://www.cnblogs.com/skyh/p/12241378.html
Copyright © 2011-2022 走看看