树 社论
题面
(BZOJ3306)
维护一棵有根树,支持
- 换根
- 修改点权
- 查询子树点权 .
题解
正解
维护 DFS 序,修改点和查询子树点权 都非常容易 .
丢掉根,随便选一个当根,然后统计答案的时候分类看看即可:
- 查询根的子树
- 根在查询的子树内
- 根在查询的子树外
随便搞搞,见下
代码我都看不下去了,就不放了 .
口胡
因为实在太难写了,摆烂了
维护 DFS 序,修改点和查询子树点权 都非常容易 .
我就是要换根,换根的时候考虑 DFS 序是怎么变的,因为我懒的放图了,你感性理解一下,一次换根可以拆成 次区间翻转 .
维护 DFS 序和子树大小,这样才能统计答案,子树大小的变化就是一个区间加 .
维护
- 区间翻转
- 区间加(单点修改)
- 区间 (单点查询)
括号里是包含关系 .
于是上几棵文艺平衡树暴艹,就能过去了 .
复杂度不变 .
以下是博客签名,正文无关
本文来自博客园,作者:yspm,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/15843058.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】