CF1137F

考虑这个把一个节点编号设为 max 的操作在干什么。我们把当前编号最大的点 u 设为根,如果将 v 设为编号最大的点,那么容易发现当只有当整棵树只剩下 (u,v) 这条链的时候才会开始从点 u 一个一个删到 v。而除了这条链上的点的相对位置是不会改变的。那每一次修改其实就是将一个点到根的链从原来的删除序列中拿出来放到最后,然后将新的点设为根。

可以发现,这个美妙的操作和 LCT 十分类似。于是我们可以用 LCT 维护这棵树的形态,每次将一个点到根变为实链的时候将这条链上的点赋一个新的颜色,这样在删除序列中一定是先按颜色排序,相同颜色的按当前的深度由大到小排序。使用树状数组维护颜色大小的前缀和,这题就做完了。复杂度 O(nlog2n)

https://codeforces.com/contest/1137/submission/209166502

posted @   CelticOIer  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示