HDU 6201 树形DP
来源:互联网 发布:红叶知弦小说 编辑:程序博客网 时间:2024/06/11 10:00
题目
transaction transaction transaction
题意
给 n 个点,n-1条边,每个点上图书的价格都不同。 一个商人在则个图上旅游,他将会在一点买一本书,在其中另一点卖掉,问他最多能挣多少钱。(这两个点可重复)
题解
树形 dp。n个点,n-1条边的连通图就是一棵树。开个二维数组dp[MAX][2],dp[i][0]记录在 i 点及 i 的子树买书花费最少值,dp[i][1]记录在 i 点及 i 的子树卖书赚的最大值。dp[i][1] + dp[i][0]则表示经过 i 点进行买卖的利润最大值。遍历 dp 数组找出 max{dp[i][1] + dp[i][0], 1 ≤ i ≤ n} 则为答案。
代码
#include <algorithm>#include <bitset>#include <cstring>#include <cstdio>#include <cmath>#include <cstdlib>#include <climits>#include <iostream>#include <list>#include <map>#include <queue>#include <set>#include <stack>#include <string>#include <vector>using namespace std;const int MAX = 100005;int value[MAX];struct node{ int to,cost; node(int t = 0,int c = 0) : to(t), cost(c){}};vector<node>nodes[MAX];int dp[MAX][2];int ans = 0;void dfs(int u, int pre) { dp[u][0] -= value[u]; dp[u][1] += value[u]; for(int i=0;i<nodes[u].size();++i){ int to = nodes[u][i].to; int cost = nodes[u][i].cost; if(to == pre) continue; dfs(to,u); dp[u][0] = max(dp[u][0],dp[to][0] - cost); dp[u][1] = max(dp[u][1],dp[to][1] - cost); } ans = max(dp[u][0] + dp[u][1] , ans);}int main(){ int t; cin >> t; while(t--){ memset(dp,0,sizeof(dp)); int n; cin >> n; for(int i=1;i<=n;++i){ nodes[i].clear(); } for(int i=1;i<=n;++i){ scanf("%d",value + i); } int x,y,z; for(int i=0;i<n-1;++i){ scanf("%d %d %d",&x,&y,&z); nodes[x].push_back(node(y,z)); nodes[y].push_back(node(x,z)); } ans = 0; dfs(1,-1); cout << ans <<endl; } return 0;}
阅读全文
0 0
- 树形DP HDU 6201
- hdu 6201 树形DP
- HDU 6201 树形DP
- HDU 6201 树形dp
- HDU 6201transaction 【树形DP】
- HDU-6201 transaction transaction transaction(树形dp)
- HDU 6201 树形DP 或 最长路
- hdu 6201 transaction transaction transaction 树形dp
- 树形dp hdu Computer
- 【树形DP】hdu 1520
- hdu 1054 #树形DP
- hdu 4303 树形dp
- hdu 4340 树形dp
- hdu 4340 树形DP
- HDU 4340 树形DP
- hdu 4267 树形dp
- hdu 4383 树形dp
- HDU 2196 树形dp
- 【2017新疆网络赛】C Coconut
- Spring Cloud Zuul微服务网关的API限流
- HDU Number Sequence (KMP模板)
- 使用ajax完成python flask前端与后台数据的交互
- Hbase的安装部署及基本语法
- HDU 6201 树形DP
- JFinal上传文件时用getFile()方法报错
- Nginx配置详解
- XML的使用
- 谁知道vimrc中的这条横线是vimrc中的哪一条?看着好别扭
- C++单元测试(Unit Test)中Catch和Gmock的结合使用
- HDU 6194 后缀数组+lcp+rmq
- Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类
- 用python简单实现mysql数据同步到ElasticSearch