2017沈阳网络赛 1008 HDU 6201 transaction transaction transaction(树形dp)
来源:互联网 发布:linux配置javahome 编辑:程序博客网 时间:2024/05/21 19:43
题意:给你一颗树,边有权值,现在有本书,每个点都有这本书的价格,现在你可以选任意一点作为起点买这本书,跑去任意一点卖掉,过程中消耗路径的权值花费,问你任选起点和终点最大收益是多少。
思路:树形DP,dp[u][0]表示以u为根的子树中买一本书的最大收益,dp[u][1]表示以u为根的子树中卖一本书的最大收
益。dp[u][0]+dp[u][1]即为在以u为根的子树中选两点的最大收益。
代码:
#include<bits/stdc++.h>using namespace std;typedef long ll;const int maxn = 1e5+5;struct node{ int v, w; node() {} node(int vv, int ww): v(vv), w(ww) {}};vector<node> g[maxn];int a[maxn], dp[maxn][2], ans;void dfs(int u, int pre){ dp[u][0] = -a[u]; dp[u][1] = a[u]; for(int i = 0; i < g[u].size(); i++) { int v = g[u][i].v; int w = g[u][i].w; if(v == pre) continue; dfs(v, u); dp[u][0] = max(dp[u][0], dp[v][0]-w); dp[u][1] = max(dp[u][1], dp[v][1]-w); } ans = max(ans, dp[u][0]+dp[u][1]);}int main(void){ int _, n; cin >> _; while(_--) { scanf("%d", &n); for(int i = 1; i <= n; i++) scanf("%d", &a[i]); for(int i = 1; i <= n; i++) g[i].clear(); for(int i = 1; i <= n-1; i++) { int u, v, w; scanf("%d%d%d", &u, &v, &w); g[u].push_back(node(v, w)); g[v].push_back(node(u, w)); } ans = 0; dfs(1, -1); printf("%d\n", ans); } return 0;}
阅读全文
1 0
- 2017沈阳网络赛 1008 HDU 6201 transaction transaction transaction(树形dp)
- HDU沈阳网络赛:transaction transaction transaction(树形dp & 最短路)
- HDU 6201 transaction transaction transaction &&沈阳网络赛1008
- HDU 6201 transaction transaction transaction (2017沈阳网络赛
- HDU 6201 transaction transaction transaction (2017沈阳网络赛
- 【2017沈阳网络赛】1008 hdu6201 transaction transaction transaction 树形dp
- ICPC2017网络赛(沈阳)1008 transaction transaction transaction——树形DP
- HDU-6201 transaction transaction transaction(树形dp)
- hdu 6201 transaction transaction transaction 树形dp
- HDU 6201 transaction transaction transaction(树形dp)
- HDU 6201 transaction transaction transaction (树形dp)
- HDU 6201 transaction transaction transaction【树形DP||SPFA最长路】
- HDU6201 2017 transaction transaction transaction 树形DP?
- HDU 6201transaction 【树形DP】
- HDU 6201 transaction transaction transaction (树形DP or 拆点最短路)
- Hdu 6201 transaction transaction transaction 树型DP
- HDU 6201 transaction transaction transaction(dp)
- hdu 6201 transaction transaction transaction tree dp
- 基于Tensorflow+Python实现降噪自动编码器(DAE)
- jQuery学习-对象与选择器(锋利的jQuery)
- [bzoj-2049][Sdoi2008]Cave 洞穴勘测 题解
- 点击按钮显示多个框
- 如何向Vive Port中上传htc vive应用
- 2017沈阳网络赛 1008 HDU 6201 transaction transaction transaction(树形dp)
- TTTAttributedLabel 高度计算
- Hello
- hdu 6201 深度优先搜索
- MVP+Retrofit+RxJava简单事例
- Linux串口编程
- java 中类型转为String方法
- Js 柯里化
- HDU 6159 cable cable cable