[hdu6201]transaction transaction transaction(树形dp)
2024-09-07 09:15:13
题意:某人在一棵树中在某处买物品,价格为i,在某处卖物品,价格为j,每单位距离花费价格1,求最大赚钱数。
解题关键:两次树形dp,分别求出每个点作为被减和被加情况下的最大值,最后取一下max即可。
该节点被减的情况,为他和他所在的子树上的最大值,并且是他的各父节点的被减,该节点被加情况的最大值;
该节点被加的情况,为他和他所在的子树上的最大值,并且是他的各父节点的被加,该节点被减情况的最大值。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<iostream>
using namespace std;
typedef long long ll;
const int maxn=1e6+;
const ll inf=1e17+;
ll head[maxn],tot,n,m,sum,val[maxn];
struct edge{
ll to;
ll nxt;
ll w;
}e[maxn<<];
void add_edge(int u,int v,int w){
e[tot].to=v;
e[tot].w=w;
e[tot].nxt=head[u];
head[u]=tot++;
} ll dp[maxn],cnt[maxn],ans,dp2[maxn]; void dfs(ll u,ll fa){
for(int i=head[u];i!=-;i=e[i].nxt){
int v=e[i].to;
int w=e[i].w;
if(v==fa) continue;
dfs(v,u);
dp[u]=max(dp[v]+val[v]-w-val[u],dp[u]);
dp2[u]=max(dp2[v]-val[v]-w+val[u],dp2[u]);
}
} inline int read(){
char k=;char ls;ls=getchar();for(;ls<''||ls>'';k=ls,ls=getchar());
int x=;for(;ls>=''&&ls<='';ls=getchar())x=(x<<)+(x<<)+ls-'';
if(k=='-')x=-x;return x;
} int main(){
int k=;
int T;
T=read();
while(T--){
n=read();
memset(dp,,sizeof dp);
memset(head,-,sizeof head);
memset(dp2,,sizeof dp2);
tot=;
sum=;
int a,b,c;
for(int i=;i<=n;i++) val[i]=read();
for(int i=;i<n-;i++){
a=read();
b=read();
c=read();
add_edge(a,b,c);
add_edge(b,a,c);
}
dfs(,-);
ll ans=-inf;
for(int i=;i<=n;i++){
ans=max(ans,dp[i]);
ans=max(ans,dp2[i]);
}
printf("%lld\n",ans);
}
return ;
}
最新文章
- 提交数据url太长导致提交失败
- libsvm 训练后的模型参数讲解(转)
- CircleLayout
- ASP.NET CS文件中输出JavaScript脚本的3种方法以及区别
- 数据结构(树状数组):HEOI2012 采花
- AndroidStudio常见提示
- 我的学习笔记之API-Guides翻译------AppComponent_Activites
- Android记录4--自定义ToggleButton+用SharedPreferences保存用户配置
- 你连Nginx怎么转发给你请求都说不清楚,还好意思说自己不是CRUD工程师?
- 第二章 Android系统与嵌入式开发
- 3.7 unittest之断言
- Deep Learning - 2 反向传播
- 从0移植uboot(三) _编译最小可用uboot
- Codeforces Round #499 (Div. 2) C. Fly(数学+思维模拟)
- mongodb启动出现Failed to connect to 127.0.0.1:27017 after 5000ms milliseconds,giving up
- Docker基础-搭建本地私有仓库
- [Backbone]7. Collection Views, Custom Events
- vcs github gitlab git名词解释
- jQuery懒加载插件 – jquery.lazyload.js
- IEEP-OSPF域内路由故障-现象与排障思路