题干:

在X森林里,上帝创建了生命之树。

他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值。
上帝要在这棵树内选出一个非空节点集S,使得对于S中的任意两个点a,b,都存在一个点列 {a, v1, v2, ..., vk, b} 使得这个点列中的每个点都是S里面的元素,且序列中相邻两个点间有一条边相连。

在这个前提下,上帝要使得S中的点所对应的整数的和尽量大。
这个最大的和就是上帝给生命之树的评分。

经过atm的努力,他已经知道了上帝给每棵树上每个节点上的整数。但是由于 atm 不擅长计算,他不知道怎样有效的求评分。他需要你为他写一个程序来计算一棵树的分数。

「输入格式」
第一行一个整数 n 表示这棵树有 n 个节点。
第二行 n 个整数,依次表示每个节点的评分。
接下来 n-1 行,每行 2 个整数 u, v,表示存在一条 u 到 v 的边。由于这是一棵树,所以是不存在环的。

「输出格式」
输出一行一个数,表示上帝给这棵树的分数。

「样例输入」
5
1 -2 -3 4 5
4 2
3 1
1 2
2 5

「样例输出」
8

「数据范围」
对于 30% 的数据,n <= 10
对于 100% 的数据,0 < n <= 10^5, 每个节点的评分的绝对值不超过 10^6 。

资源约定:
峰值内存消耗 < 256M
CPU消耗  < 3000ms

解题报告:

因为没有试题链接,所以就假装AC了。。。写了一遍也没检查,可能有错。

不知道是否AC的代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
const int MAX = 2e5 + 5;
ll val[MAX];
int n;
vector<int> vv[MAX];
ll dp[MAX];
void dfs(int cur,int rt) {int up = vv[cur].size();dp[cur] = val[cur];for(int i = 0; i<up; i++) {int v = vv[cur][i];if(v == rt) continue;dfs(v,cur);if(dp[v] >= 0) dp[cur] += dp[v];}
}int main()
{cin>>n;for(int i = 1; i<=n; i++) {scanf("%lld",val+i);}for(int a,b,i = 1; i<=n-1; i++) {scanf("%d%d",&a,&b);vv[a].pb(b);vv[b].pb(a);}dfs(1,-1);ll ans = -999999999999;for(int i = 1; i<=n; i++) {ans = max(ans,dp[i]);}cout << ans;return 0 ;
}

【蓝桥杯官网试题 - 真题训练】生命之树(树形dp)相关推荐

  1. 蓝桥杯官网 试题 PREV-61 历届真题 装饰珠【第十一届】【决赛】【研究生组】【C++】【C】【Java】【Python】四种解法

    为帮助大家能在6月18日的比赛中有一个更好的成绩,我会将蓝桥杯官网上的历届决赛题目的四类语言题解都发出来.希望能对大家的成绩有所帮助. 今年的最大目标就是能为[一亿技术人]创造更高的价值. 资源限制 ...

  2. 蓝桥杯官网 试题 PREV-240 历届真题 答疑【第十一届】【决赛】【研究生组】【C++】【C】【Java】【Python】四种解法

    为帮助大家能在6月18日的比赛中有一个更好的成绩,我会将蓝桥杯官网上的历届决赛题目的四类语言题解都发出来.希望能对大家的成绩有所帮助. 今年的最大目标就是能为[一亿技术人]创造更高的价值. 资源限制 ...

  3. 蓝桥杯官网 试题 PREV-109 历届真题 扫地机器人【第十届】【省赛】【研究生组】【C++】【Java】【Python】三种解法

    为帮助大家能在6月18日的比赛中有一个更好的成绩,我会将蓝桥杯官网上的历届决赛题目的四类语言题解都发出来.希望能对大家的成绩有所帮助. 今年的最大目标就是能为[一亿技术人]创造更高的价值. 资源限制 ...

  4. 蓝桥杯官网 试题 PREV-265 历届真题 砝码称重【第十二届】【省赛】【研究生组】【C++】【C】【Java】【Python】四种解法

    为帮助大家能在6月18日的比赛中有一个更好的成绩,我会将蓝桥杯官网上的历届决赛题目的四类语言题解都发出来.希望能对大家的成绩有所帮助. 今年的最大目标就是能为[一亿技术人]创造更高的价值. 资源限制 ...

  5. 【蓝桥杯官网试题 - 算法训练 】K好数(线性dp与优化)

    题干: 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.2 ...

  6. 【蓝桥杯官网试题 -算法训练】素因子去重(数学,数论,因子约数)

    题干: 问题描述 给定一个正整数n,求一个正整数p,满足p仅包含n的所有素因子,且每个素因子的次数不大于1 输入格式 一个整数,表示n 输出格式 输出一行,包含一个整数p. 样例输入 1000 样例输 ...

  7. 【蓝桥杯官网试题 - 算法训练 】P0502(乱搞,tricks)

    题干: 编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20.然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来.如果有两个 ...

  8. 【蓝桥杯官网试题 - 历届试题】小朋友排队(逆序数,树状数组)

    题干: 问题描述 n 个小朋友站成一排.现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友. 每个小朋友都有一个不高兴的程度.开始的时候,所有小朋友的不高兴程度都是0. 如果某 ...

  9. 【蓝桥杯官网试题 - 算法提高 】求最大值 (dp,0-1背包)

    题干: 问题描述 给n个有序整数对ai bi,你需要选择一些整数对 使得所有你选定的数的ai+bi的和最大.并且要求你选定的数对的ai之和非负,bi之和非负. 输入格式 输入的第一行为n,数对的个数 ...

最新文章

  1. 学了那么久的计算机视觉,竟然还不懂YOLO?!
  2. centos memcached php,centos系统为php安装memcached扩展步骤
  3. 如何提高Linux下块设备IO的整体性能?
  4. DIV的边距属性在Chrome和IE中的区别
  5. [Java核心技术(卷I)] - vscode手动编译运行继承类
  6. extjs弹出窗口查看文本内容-new Ext.Window
  7. Oracle集合查询
  8. 为什么美元持续贬值,国际市场上价格与美元挂钩的大宗商品,包括石油、钢铁、铜、矿石、粮食等,价格上涨
  9. 做网络需要掌握的56句话
  10. 计算机课本ppt,计算机基础知识培训教材(ppt44页) .pptx
  11. java 启动jar包JVM参数
  12. 输入字符串按照单词逆序输出
  13. Beautiful Soup 4.2.0 文档
  14. svn图标不显示的解决方案
  15. 游戏测试-笔试/面试(一)
  16. 网络七层协议和TCP/IP五层协议
  17. Linux 配置网络桥接模式
  18. Android开发艺术探索之初探AIDL(一)
  19. 第四范式战疫侦察三部曲:追踪、筛查、推演 提升疫情防控能力
  20. 手把手 | 用Python语言模型和LSTM做一个Drake饶舌歌词生成器

热门文章

  1. python抓取交易所_Python百行代码抓取美股三大交易所历史数据
  2. Linux禁止ip拒绝访问80,Linux iptables 设置允许(禁止)IP范围
  3. 该文件没有与之关联的程序来执行该操作_Liunx tty子系统分析之三 tty字符设备文件操作接口说明...
  4. ftp 上传文件夹_命令行连接FTP服务器
  5. 在jsp页面里动态生成EL表达式的key
  6. 怎么在服务器上加端口映射,Windows服务器中命令行添加端口映射
  7. python转r字符_python r不转义变量
  8. java 采样_Java编程实现beta分布的采样或抽样实例代码
  9. CPU8085 8086名字的由来
  10. termcap-1.3.1的configure.in文件逐行分析