资讯动态

树形DP

发布时间:2026/8/14 15:25:41 来源:尧图企业网站定制
前言顾名思义树上的DP树是一种数据结构DP (动态规划) 是一种算法接下来我将用洛谷上的 P2052 来向你讲解P2052P2052 [NOI2011] 道路修建 - 洛谷题意给一棵树计算n-1条边每条边两边节点相减的绝对值乘边权。思路用DFS统计两边节点数存入DP后计算DP相当于记忆化代码如下#includebits/stdc.h using namespace std; const int N1e610; vectorpairint ,int g[N];//补充一 int dp[N]; long long n,sum0; void dfs(int u,int fa){ dp[u]1; for(int i0;ig[u].size();i){ int vg[u][i].first; //补充二 int wg[u][i].second; //v是子节点w是边权 if(vfa) continue; //避免找到父节点 dfs(v,u); dp[u]dp[v]; sumabs(n-dp[v]-dp[v])*w; //计算存入sum } } int main(){ cinn; for(int i1;in;i){ int a,b,c; //补充三 cinabc; g[a].push_back({b,c}); g[b].push_back({a,c}); } dfs(1,0); coutsum; return 0; }补充见代码补充一vector数组g[i]为节点vector数组可以理解成无限的数组pair可以理解成结构体补充二pair的调用补充三存边——a,b是节点c是边权

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价