洛谷P1122 最大子树和 树形DP初步
小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题。一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题。于是当日课后,小明就向老师提出了这个问题:
一株奇怪的花卉,上面共连有NN朵花,共有N-1N−1条枝干将花儿连在一起,并且未修剪时每朵花都不是孤立的。每朵花都有一个“美丽指数”,该数越大说明这朵花越漂亮,也有“美丽指数”为负数的,说明这朵花看着都让人恶心。所谓“修剪”,意为:去掉其中的一条枝条,这样一株花就成了两株,扔掉其中一株。经过一系列“修剪“之后,还剩下最后一株花(也可能是一朵)。老师的任务就是:通过一系列“修剪”(也可以什么“修剪”都不进行),使剩下的那株(那朵)花卉上所有花朵的“美丽指数”之和最大。
老师想了一会儿,给出了正解。小明见问题被轻易攻破,相当不爽,于是又拿来问你。
输入格式
第一行一个整数N(1 ≤ N ≤ 16000)N(1≤N≤16000)。表示原始的那株花卉上共NN朵花。
第二行有NN个整数,第II个整数表示第II朵花的美丽指数。
接下来N-1N−1行每行两个整数a,ba,b,表示存在一条连接第aa 朵花和第bb朵花的枝条。
输出格式
一个数,表示一系列“修剪”之后所能得到的“美丽指数”之和的最大值。保证绝对值不超过21474836472147483647。
输入输出样例
输入 #1复制
7 -1 -1 -1 1 1 1 0 1 4 2 5 3 6 4 7 5 7 6 7
输出 #1复制
3
说明/提示
【数据规模与约定】
对于60\%60%的数据,有N≤1000N≤1000;
对于100\%100%的数据,有N≤16000N≤16000。
这个题,比较简单,就是求一颗权值最大子树的权值,记忆化搜索,每次保留最大权值即可。、
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
vector<int>E[maxn];
int n,w[maxn],ans1=0;
void add(int x,int y)
{E[x].push_back(y);E[y].push_back(x);
}
int dp(int ver,int fa)
{int ans=w[ver];for(int i=0;i<E[ver].size();i++)if(E[ver][i]!=fa) ans+=max(0,dp(E[ver][i],ver));ans1=max(ans1,ans);return ans;
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",w[i]);for(int i=1,x,y;i<=n-1;i++){scanf("%d%d",&x,&y);E[x].push_back(y);//无向图存 E[y].push_back(x);}dp(1,0); printf("%d\n",ans1);return 0;
}
洛谷P1122 最大子树和 树形DP初步相关推荐
- 洛谷 P1122 最大子树和 题解
题目:P1122 最大子树和 DP - 树形DP - dfs 这题的做法被题目名字给暴露了 设 f [ i ] f[i] f[i] 为以点 i i i 为根的子树中的最大子树和 设 j j j 为 i ...
- Luogu P1122 最大子树和 树形DP
题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题.于是当日课后,小明 ...
- 洛谷P1122最大子树和题解
题目 一道比较好想的树形\(DP\) 完全可以用树形DP的基本思路,递归,然后取最优的方法. \(Code\) #include <iostream> #include <cstri ...
- 洛谷P1351 联合权值(树形dp)
题意 题目链接 Sol 一道很简单的树形dp,然而被我写的这么长 分别记录下距离为\(1/2\)的点数,权值和,最大值.以及相邻儿子之间的贡献. 树形dp一波.. #include<bits/s ...
- 洛谷2015 二叉苹果树 树形DP
https://www.luogu.org/problemnew/show/P2015 二叉苹果树 时间限制: 1 Sec 内存限制: 128 MB 题目描述 有一棵苹果树,如果树枝有分叉,一定是分 ...
- 洛谷 2016 战略游戏(树形DP)
题目描述 Bob喜欢玩电脑游戏,特别是战略游戏.但是他经常无法找到快速玩过游戏的办法.现在他有个问题. 他要建立一个古城堡,城堡中的路形成一棵树.他要在这棵树的结点上放置最少数目的士兵,使得这些士兵能 ...
- 洛谷P2016 战略游戏【树形dp】
P2016 战略游戏 时间限制 1.00s 内存限制 125.00MB 题目描述 Bob喜欢玩电脑游戏,特别是战略游戏.但是他经常无法找到快速玩过游戏的办法.现在他有个问题. 他要建立一个古城堡,城堡 ...
- 洛谷 1131 [ZJOI2007]时态同步——树形dp
题目:https://www.luogu.org/problemnew/show/P1131 因为越高,调节一个影响到的越多,所以底下只要把子树间的差异消除了就行了,与其他部分的差异由更高的边调节. ...
- 洛谷 1351 联合权值——树形dp
题目:https://www.luogu.org/problemnew/show/P1351 对拍了一下,才发现自己漏掉了那种拐弯的情况. #include<iostream> #incl ...
最新文章
- golang 结构体 map 转化为 json
- HTML5的 input:file上传类型控制
- python中怎么比较两个列表-python中比较两个列表的实例方法
- (转)Eclipse New Server 【无法输入server name】
- android开发学习之路——连连看之游戏逻辑(五)
- 小师妹学JVM之:GC的垃圾回收算法
- 【渝粤题库】广东开放大学 个人与团队管理 形成性考核
- [转载] python-numpy如何初始化数组值全为nan
- 利用密码字典暴力破解渗透目标系统
- 定时器 Cron表达式
- 微信小程序获取tabbar的高度_微信小程序自定义tabbar
- 暖身驱寒的三种瑜伽呼吸法
- 正态分布变换NDT算法原理及其在点云配准中的应用
- 快速收录的软文发布平台
- java砍价源码_(JAVA)仿拼多多砍价算法
- 时间序列分析复习 01 引论
- 【无标题】5421码 2421码 余三码
- vitamio视频播放器实现
- Unity 生成原始LUT用于外部校色相机不透明物体截图
- 人听到坏消息的反应_如何应对坏消息,正确传达坏消息的七个方法