DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 认证的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

Dynamic Tree Vertex Add Subtree Sum

返回题目

题解

간선 (v,p)(v,p)(v,p)에 대한 질의는 그 간선을 잠시 삭제했을 때 vvv가 속한 연결 컴포넌트의 정점 가중치 합을 묻는 것과 같다.

Link-Cut Tree에 각 정점의 값, splay 내부 합, preferred path 밖에 있는 virtual child들의 합을 함께 저장한다. access에서 오른쪽 자식이 preferred child에서 virtual child로 바뀌거나 그 반대로 바뀔 때 virtual 합을 갱신하면, makeroot(x) 후 access(x)를 수행했을 때 해당 연결 컴포넌트 전체의 합을 얻을 수 있다.

따라서 0번 질의는 cut과 link, 1번 질의는 한 정점의 값 증가, 2번 질의는 cut(v,p), 컴포넌트 합 조회, link(v,p)로 처리한다. 모든 연산은 O(log⁡N)O(\log N)O(logN) amortized time에 수행된다.

Solution written by GPT5.5