摘要: 题目链接:https://www.luogu.com.cn/problem/P4427 题意: 给定一颗树,m次询问,每次询问u-v之间每个节点的k次方之和 思路: 树上前缀和:res=ans[u][k]+ans[v][k]-ans[lca(u,v)][k]-ans[fa[lca(u,v)][0]] 阅读全文
posted @ 2025-03-15 18:14 Marinaco 阅读(19) 评论(0) 推荐(0)
摘要: int dep[maxn];//存u的深度 int fa[maxn][50];//存从u向上跳pow(2,i)的祖先节点 //流程:1.dfs创建st表 //2.利用st表求LCA vector<int>e[maxn]; void dfs(int u,int father){ dep[u]=dep[ 阅读全文
posted @ 2025-03-15 17:16 Marinaco 阅读(34) 评论(0) 推荐(0)
摘要: 时间复杂度O(mlogn*logn) 用于解决u-v最短路径权值问题 解决u子树点权值和问题 可以将两点之间深度较深的那一个点的权值映射到这条边的权值 从而通过维护点权值间接维护边权值 每次只需要lca那一点的权值不动即可 int w[maxn]; vector<int>e[maxn]; int f 阅读全文
posted @ 2025-03-15 10:31 Marinaco 阅读(28) 评论(0) 推荐(0)
//雪花飘落效果