牛客xiao白月赛45 E筑巢

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

题目描述

小沙转生成为了蚂蚁子,现在他攻占了一颗树,树里面还是实心的木头,所以小沙想要将里面连续的一部分掏空让自己居住(因为小沙只想住一个家)。但是并不是每个部分都适合开采,某些地方的开采后可能导致舒适度下降。

将上面的问题抽象出来,我们可以理解成,给定你一个n个节点的树,你需要在树上选取一个非空连通块,使其舒适度和最大。选择的边和点的舒适度都是舒适度。

输入描述:

 

第一行输入一个正整数数n≤105n\leq 10^5n≤105

第二行输入n个数 每个数代表该节点开采后的舒适度−109≤ai≤109-10^9\leq a_i\leq 10^9−109≤ai​≤109

随后n-1行每行输入3个数x,y,w分别代表x与y之间有一条舒适度为w的路

1≤x,y≤n,−109≤w≤1091\leq x,y\leq n,-10^9\leq w\leq 10^91≤x,y≤n,−109≤w≤109

输出描述:

输出小沙的家的最大舒适度

思路:类似于树上的“最大子段和”,考虑树形DP,容易想到以任一节点为根得出的答案不变。

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;

const int N=1000010;
ll n,x;
ll ans=-1e18;
int a[N];
char s[N];
ll d
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值