修剪花卉(codevs 1794)
ZZ对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题。
一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题。
于是当日课后,ZZ就向老师提出了这个问题:
一株奇怪的花卉,上面共连有N 朵花,共有N-1条枝干将花儿连在一起,并且未修剪时每
朵花都不是孤立的。
每朵花都有一个“美丽指数”,该数越大说明这朵花越漂亮,也有“美丽指数”为负数的,
说明这朵花看着都让人恶心。
所谓“修剪”,意为:去掉其中的一条枝条,这样一株花就成了两株,扔掉其中一株。
经过一系列“修剪“之后,还剩下最后一株花(也可能是一朵)。
老师的任务就是:通过一系列“修剪”(也可以什么“修剪”都不进行),使剩下的那株(那
朵)花卉上所有花朵的“美丽指数”之和最大。
老师想了一会儿,给出了正解(交大的老师是很牛的~)。ZZ见问题被轻易攻破,相当不爽,
于是又拿来问你。
第一行一个整数N(1 ≤ N ≤ 16000)。表示原始的那株花卉上共N 朵花。
第二行有N 个整数,第I个整数表示第I朵花的美丽指数。
接下来N-1行每行两个整数a,b,表示存在一条连接第a 朵花和第b朵花的枝条。
一个数,表示一系列“修剪”之后所能得到的“美丽指数”之和的最大值。保证绝对值不超
过2147483647。
7
-1 -1 -1 1 1 1 0
1 4
2 5
3 6
4 7
5 7
6 7
3
数据范围:
对于 60%的数据, 保证N≤1,000
对于100%的数据,保证N≤16,000
//树形DP
#include<cstdio>
#include<iostream>
#include<vector>
#define M 16010
using namespace std;
vector<int> grap[M];
int a[M],f[M],vis[M];
void dfs(int x)
{
if(f[x])return;
f[x]=a[x];
for(int i=;i<grap[x].size();i++)
{
int y=grap[x][i];
if(!vis[y])
{
vis[y]=;
dfs(y);
f[x]+=max(,f[y]);
}
}
}
int main()
{
freopen("jh.in","r",stdin);
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
for(int i=;i<=n-;i++)
{
int x,y;
scanf("%d%d",&x,&y);
grap[x].push_back(y);
grap[y].push_back(x);
}
vis[]=;
dfs();
int ans=;
for(int i=;i<=n;i++)
ans=max(ans,f[i]);
printf("%d",ans);
return ;
}
修剪花卉(codevs 1794)的更多相关文章
- Codevs 1794 修剪花卉
1794 修剪花卉 题目描述 Description ZZ对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题. 一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿 ...
- 【u213&&t037】修剪花卉
Time Limit: 1 second Memory Limit: 128 MB [问题描述] ZZ对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题. 一天他早晨骑车去上 ...
- [Luogu 1122] 最大子树和
题目 Description 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题 ...
- 【树形DP】洛谷1122_最大子树和
又是一道树形DP的入门题,思想非常简单 然而我最开始还是存了两个状态[传送门] 题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上 ...
- 树形dp入门两题
题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题.于是当日课后,小明 ...
- 最大子树和 树形dp
题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题.于是当日课后,小明 ...
- 洛谷P1122 最大子树和
P1122 最大子树和 题目提供者该用户不存在 标签动态规划树形结构 难度普及/提高- 通过/提交54/100 提交该题 讨论 题解 记录 题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在 ...
- luogu P1122 最大子树和
题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题.于是当日课后,小明 ...
- AC日记——最大子树和 洛谷 P1122
题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题.于是当日课后,小明 ...
随机推荐
- PHP防止重复提交表单(helloweba网站经典实例)
<?php session_start(); header("Content-Type:text/html;charset:utf8"); function set_toke ...
- centos7中systemctl命令使用方法和心得体会
使用linux的同学对service和chkconfig两个命令都不陌生,其重要性不言而喻,那么怎么会突然冒出个systemctl命令呢?其实,为了简化操作,systemctl命令将service和c ...
- 找出现有Vector或ArrayList或数组中重复的元素&给现有Vector或ArrayList或数组去重
//直接上代码: public static void main(String[] args) { List<Integer> list = new Vector<Integer&g ...
- ngrok反向代理
关于ngrok ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道.ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放. 为什么使用ngrok? ...
- 修改linux最大文件句柄数
大家知道在linux服务器大并发调优时,往往需要预先调优linux参数,其中修改linux最大文件句柄数是最常修改的参数之一. 在linux中执行ulimit -a 即可查询linux相关的参数,如下 ...
- CrtCtl (客户端认证的证书、私钥)的控制
crt (证书文件) 编辑 本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 客户端认证的证书.私钥. 中文名 crt 性 质 证书文件 类 型 客户端认证的证书. ...
- memcached工作原理
1.Memcached处理的原子是每一个(key,value)对(以下简称kv对),key会通过一个hash算法转化成hash-key,便于查找.对比以及做到尽可能的散列.同时,memcached用的 ...
- SGU-169 Numbers(找规律)
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=169 解题报告: P(n)定义为n的所有位数的乘积,例如P(1243)=1*2*3* ...
- 北工大耿丹学院16级计科院3班C语言课程助教学期总结
很荣幸得到邹老师,周老师,以及北工大耿丹学院各位老师的认可,担任计科院3班C语言课程助教,班主任为李光杰老师,很感谢李老师一学期的帮助,使得我更好的担任助教一职.我班学生31名,很愉快的与同学们度过一 ...
- Android通过URL加载网络图片
public static Bitmap getBitmap(String path) throws IOException { URL url = new URL(path); HttpURLCon ...