文章分类 -  算法蒟蒻 / 图论 / 树上问题

摘要:【LCA】最近公共祖先 LCA(x,y) 模版代码 模版题 https://www.luogu.com.cn/problem/P3379 树上倍增 基础封装:针对无权图 把空间开到全局 struct Tree { int n; vector<vector<int>> ver, val; vector 阅读全文
posted @ 2025-08-15 15:04 White_ink 阅读(7) 评论(0) 推荐(0)
摘要:【树上模拟】 1-1-1, Free Tree! https://codeforces.com/contest/2126/problem/F 树很关键的一个优化点:父亲有且只有一个 ->将遍历出边O(n)优化到:遍历父亲O(1)/儿子(如果可以一起维护) 题目大意 思路 难点在于每次修改颜色之后需要 阅读全文
posted @ 2025-07-18 11:29 White_ink 阅读(48) 评论(0) 推荐(0)
摘要:【树上前缀和】 Compare Tree Weights 【树链剖分+树状数组维护顶点前缀和】 https://atcoder.jp/contests/abc406/tasks/abc406_f #include<bits/stdc++.h> using namespace std; #define 阅读全文
posted @ 2025-05-18 07:59 White_ink 阅读(29) 评论(0) 推荐(0)
摘要:【树链剖分】 将树分割成多条链,然后利用数据结构(线段树、树状数组等)来维护这些链 阅读全文
posted @ 2025-05-17 22:07 White_ink 阅读(12) 评论(0) 推荐(0)
摘要:【树的直径】 求解方法 //搜索思路 (1)任选一点x,求出距离x最远的点y 然后再以y为起点,求出距离y最远的点的距离 //树形DP思路 (2)树的直径maxd就是所有节点往下走的最大距离与次大距离之和中的最大值 即maxd=max(dis1[i]+dis2[i]) (例题)旅游规划 https: 阅读全文
posted @ 2025-01-18 21:18 White_ink 阅读(39) 评论(0) 推荐(0)
摘要:【二叉树】 核心在于递归 ※注意左右子树存在时才能继续递归! 前序遍历 根节点->左子树->右子树 void pre_order(int x){ cout<<x; if(tree[x].left!=0){ pre_order(tree[x].left); } if(tree[x].right!=0) 阅读全文
posted @ 2024-11-09 01:39 White_ink 阅读(34) 评论(0) 推荐(0)