把后缀排序搞到了树上。
一个节点的字符串的定义为 这个节点到根经过的所有字符组成的字符串。请将这些字符串按字典序排序。输出排名为i的字符串所在的节点。
特别地,如果两个节点所代表的字符串完全相同,它们的大小由它们的父亲所代表的字符串的大小决定,如果仍相同,则由它们编号的大小决定。
就是自己的字符串是第一关键字 第二个关键字是父亲 第三关键字是自己的编号 xht37说没定义大小决定 默认由小到大(是我又孤陋寡闻了。
可以发现定义成这个样子 我们没法上广义SAM 最坏复杂度可能要被卡到(n^2).
考虑一下我们后缀排序。我又忘了后缀数组是啥了(做了那么多题了说忘就忘。。
md 我不会 感觉实现这个有点复杂 我多思考清楚再来填坑吧。
上两道模板题:
这个是一道树上后缀排序的模板 但是我不会。
求第k大不难想到 主席树,我们没必要树剖 一种是链的第k大 我们直接dfs序搞。一种是子树内的 发现也可以dfs序搞不过要两棵主席树 当然后者还可以主席树合并搞。
前提是求出树上的SA数组才行,但是我不会。。