树形DP
前言顾名思义树上的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是边权
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2440879.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!