Time Limit: 1 second

Memory Limit: 128 MB

【问题描述】

ZZ对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题。

一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题。

于是当日课后,ZZ就向老师提出了这个问题:

一株奇怪的花卉,上面共连有N 朵花,共有N-1条枝干将花儿连在一起,并且未修剪时每

朵花都不是孤立的。

每朵花都有一个“美丽指数”,该数越大说明这朵花越漂亮,也有“美丽指数”为负数的,

说明这朵花看着都让人恶心。

所谓“修剪”,意为:去掉其中的一条枝条,这样一株花就成了两株,扔掉其中一株。

经过一系列“修剪“之后,还剩下最后一株花(也可能是一朵)。

老师的任务就是:通过一系列“修剪”(也可以什么“修剪”都不进行),使剩下的那株(那

朵)花卉上所有花朵的“美丽指数”之和最大。

老师想了一会儿,给出了正解(交大的老师是很牛的~)。ZZ见问题被轻易攻破,相当不爽,

于是又拿来问你。

【输入格式】

第一行一个整数N(1 ≤ N ≤ 16000)。表示原始的那株花卉上共N 朵花。 第二行有N 个整数,第I个整数表示第I朵花的美丽指数。 接下来N-1行每行两个整数a,b,表示存在一条连接第a 朵花和第b朵花的枝条。

【输出格式】

一个数,表示一系列“修剪”之后所能得到的“美丽指数”之和的最大值。保证绝对值不超 过2147483647。

【数据规模】

对于 60%的数据, 保证N≤1,000 对于100%的数据,保证N≤16,000

Sample Input1

7

-1 -1 -1 1 1 1 0

1 4

2 5

3 6

4 7

5 7

6 7

Sample Output1

3

【题目链接】:http://noi.qz5z.com/viewtask.asp?id=u213

【题解】



设f[i]表示选i这个点且i为根节点的子树能够得到的最大美丽值;

(一定要选i的情况下)



f[i]=a[i]+∑f[j];这里j是i的直系儿子且f[j]>0

最后答案就是max(f[i]);

(把f[j]<0的舍弃的过程就是减掉一条枝的过程)

如果i号节点的父亲节点也要选怎么办?

那么它的父亲节点就是根节点了;

(最后的结果树肯定能够看成是某一个节点作为根节点的一棵树,所以f的状态是正确的)



【完整代码】

#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
#define rei(x) scanf("%d",&x)
#define rep1(i,x,y) for (int i = x;i <= y;i++)
#define pb push_back const int MAXN = 16e3+100; int b[MAXN],n,f[MAXN],ans;
vector <int> G[MAXN]; void dfs(int x,int fa)
{
int temp = b[x],len = G[x].size();
for (int i = 0;i <= len-1;i++)
{
int y = G[x][i];
if (y==fa)
continue;
dfs(y,x);
if (f[y]>0)
temp+=f[y];
}
f[x] = temp;
} int main()
{
//freopen("F:\\rush.txt","r",stdin);
rei(n);
rep1(i,1,n)
rei(b[i]);
rep1(i,1,n-1)
{
int x,y;
rei(x);rei(y);
G[x].pb(y);
G[y].pb(x);
}
dfs(1,0);
ans = f[1];
rep1(i,2,n)
ans = max(ans,f[i]);
printf("%d\n",ans);
return 0;
}

【u213&&t037】修剪花卉的更多相关文章

  1. 修剪花卉(codevs 1794)

    题目描述 Description ZZ对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题. 一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉 ...

  2. Codevs 1794 修剪花卉

    1794 修剪花卉   题目描述 Description ZZ对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题. 一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿 ...

  3. [Luogu 1122] 最大子树和

    题目 Description 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题 ...

  4. 【树形DP】洛谷1122_最大子树和

    又是一道树形DP的入门题,思想非常简单  然而我最开始还是存了两个状态[传送门] 题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上 ...

  5. 树形dp入门两题

    题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题.于是当日课后,小明 ...

  6. 最大子树和 树形dp

    题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题.于是当日课后,小明 ...

  7. 洛谷P1122 最大子树和

    P1122 最大子树和 题目提供者该用户不存在 标签动态规划树形结构 难度普及/提高- 通过/提交54/100 提交该题 讨论 题解 记录 题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在 ...

  8. luogu P1122 最大子树和

    题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题.于是当日课后,小明 ...

  9. AC日记——最大子树和 洛谷 P1122

    题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题.于是当日课后,小明 ...

随机推荐

  1. 洛谷 P1598 垂直柱状图

    P1598 垂直柱状图 题目描述 写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过72个字符),然后用柱状图输出每个字符在输入文件中出现的次数.严格地按照输出样例来安排你的输出格式. ...

  2. gerrit-申请id跟本地配置

    OpenID 是一个以用户为中心的数字身份识别框架,它具有开放.分散.自由等特性. 什么是gerrit? 看 了网上的介绍,感觉所谓的gerrit就是一个基于web实现代码管理的服务器.Gerrit ...

  3. js进阶 14-7 jquery的ajax部分为什么需要对表单进行序列化

    js进阶 14-7 jquery的ajax部分为什么需要对表单进行序列化 一.总结 一句话总结:如果用ajax传递表单的数据,如果不进行表单的序列化,要一个参数一个参数的写,太麻烦,序列化的话,一句代 ...

  4. menuconfig_kconfig

    这一节的主要内容: Menuconfig的操作 Kconfig和.config文件 Linux内核配置裁剪实验 linux编译器通过.config文件确认哪些代码编译进内核,哪些被裁减掉 menuco ...

  5. solr6.3+tomcat8报错HTTP Status 403 – Forbidden解决办法

    注释掉tomcat下solr项目web.xml中的如下这段代码即可:

  6. 转载的:Python os 和 os.path模块详解

    os.getcwd()获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cd os.curdi ...

  7. 三星Galaxy Tab S2上市,压制苹果之心凸显

        平板市场正在迎来史上最为关键的一次PK,众所周知,平板市场的苹果和三星一直是行业的领头羊,而在激烈的竞争中.三星平板似乎后劲更足.众多性能优异的产品频频推出.平板之王的称谓呼之欲出. 去年三星 ...

  8. Day2:字符串常用方法

    字符串常用方法 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan name = "my \tname is ...

  9. Oracle 中的Interger类型

    引自 wolfAone, oracle有没有integer类型,这种类型的最大值是多少啊. Integer是Number类型的子类型: NUMBER Type You use the NUMBER d ...

  10. [D3] Margin Convention with D3 v4

    You can’t add axes to a chart if you don’t make room for them. To that end, the D3 community has ado ...