HDU-6201 transaction transaction transaction(树dp / 最长(短)路)
2017-09-12 15:55
381 查看
题目:http://acm.hdu.edu.cn/showproblem.php?pid=6201
题意:n个城市,n-1条路,商人要选一个城市买书,一个城市卖书,每个城市都有对应的price,每条路都有对应的的花费,求最大的money
思路:
树dp,dp[u][0]代表买书最大收益,dp[u][1]代表卖书最大收益
dp[u][0] = max(dp[u][0],dp[v][0]-w);
dp[u][1] = max(dp[u][1],dp[v][1]-w);
最长路(最短路)参考http://www.cnblogs.com/Blackops/p/7501966.html
代码:
题意:n个城市,n-1条路,商人要选一个城市买书,一个城市卖书,每个城市都有对应的price,每条路都有对应的的花费,求最大的money
思路:
树dp,dp[u][0]代表买书最大收益,dp[u][1]代表卖书最大收益
dp[u][0] = max(dp[u][0],dp[v][0]-w);
dp[u][1] = max(dp[u][1],dp[v][1]-w);
最长路(最短路)参考http://www.cnblogs.com/Blackops/p/7501966.html
代码:
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e5+5; struct edge { int v,w; }; vector<edge> G ; int maxn,dp [2],p ; void dfs(int u,int fa) { dp[u][0] = -p[u]; dp[u][1] = p[u]; for(auto e : G[u]) { int v = e.v,w = e.w; if(v == fa) 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); } maxn = max(maxn,dp[u][0]+dp[u][1]); } int main() { int T,n; scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i = 1;i <= n;i++) G[i].clear(); for(int i = 1;i <= n;i++) scanf("%d",&p[i]); --n; while(n--) { int u,v,w; scanf("%d%d%d",&u,&v,&w); G[u].push_back({v,w}); G[v].push_back({u,w}); } maxn = -0x3f3f3f3f; dfs(1,-1); printf("%d\n",maxn); } return 0; }
相关文章推荐
- HDU 6201 transaction transaction transaction【树形DP||SPFA最长路】
- 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)
- hdu 6201 transaction transaction transaction tree dp
- HDU-6201 transaction transaction transaction(树形dp)
- HDU 6201 transaction transaction transaction(SPFA算法求最长路径)
- HDU 6201 transaction transaction transaction(树形DP)
- 2017沈阳网络赛 1008 HDU 6201 transaction transaction transaction(树形dp)
- HDU 6201 transaction transaction transaction (树形dp)
- hdu 1422 重温世界杯(DP 最长非负子序列)
- HDU 6201 transaction transaction transaction
- hdu 1087 Super Jumping! Jumping! Jumping!(dp 最长上升子序列和)
- hdu 1160 dp (二维最长上升子序列 记录路径
- hdu 4745 Two Rabbits(dp最长回文子序列)
- 【最短路 spfa && 水题】hdu-6201 transaction transaction transaction
- hdu 6201 transaction transaction transaction(最长路)
- HDU 1160 FatMouse's Speed 最长上升子序列 简单DP