社区讨论

此题有SAM的单log做法(小优化)

P5353树上后缀排序参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@ltyg24sd
此快照首次捕获于
2024/03/19 22:02
2 年前
此快照最后确认于
2024/03/20 13:00
2 年前
查看原帖
大体思路同题解区中Cyber_Tree的做法,只不过优化了树上结点对应到相同节点时暴力跳倍增的 log\text{log},即用先比较深度(长度)再比较原树上 dfn\text{dfn} 序的方法实现排序的 O(1)\text{O(1)} 比较。用 dfn\text{dfn} 序是因为若用 vectorvector 存边,则儿子原先就是按编号从小到大排序的(否则再 sortsort 即可)。
CPP

inline bool rule(int a,int b)
{
    if(pos[a] != pos[b]) return dfn[pos[a]]<dfn[pos[b]];
    if(de[a] != de[b]) return de[a]<de[b];
    return ord[a]<ord[b];//dfn是parent树的dfn序,ord就是原树的
}

回复

0 条回复,欢迎继续交流。

正在加载回复...