社区讨论

如果你看不懂O(n)做法

P6086【模板】Prüfer(Prufer) 序列参与者 1已保存回复 1

讨论操作

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

当前回复
1 条
当前快照
1 份
快照标识符
@mllq1423
此快照首次捕获于
2026/02/14 10:52
5 天前
此快照最后确认于
2026/02/17 14:40
前天
查看原帖
感觉tj写的有的歧义这里补充一下
(自己理解的写法如果不正确请指出谢谢)
以m=1为例
应该是有两个指针,我们假设一个叫ptr,一个叫leaf,我们以从fa序列转为prufer序列为例 算法步骤如下:
  • 将ptr、leaf置为最小的叶子的id
  • 删去leaf,如果产生了新的叶子并且新叶子的id<ptr,则让leaf=新叶子的id,重复这一步
  • 自增ptr,直到找到新叶子,让leaf=新叶子的id,回到第二步
因为ptr是递增的,++ptr对时间复杂度的贡献是O(n),又因为每个点只会被删除一次,leaf乱跳对时间复杂度的贡献也是O(n)的
m=2同理

回复

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

正在加载回复...