SGU 143.Long Live the Queen(女王万岁)
时间限制:0.25s
空间限制:4M
题意:
有n(n<=16000)个小镇,每两个小镇有且仅有一条路径相连。每个小镇有一个收益x(-1000<=x<=1000).
现在要求,选择一些小镇,满足下面两点要求:
1.选择的小镇都能互相到达,并且路径上的小镇也被选择了.
2.选择的小镇的收益和最大.
输入
一个整数n,接下来n个整数,代表这n个小镇的收益.
接下来n-1行,每行两个整数代表这两个小镇有道路直接相连.
输出
一个整数,代表最大的收益
Sample Input
5
-1 1 3 1 -1
4 1
1 3
1 2
4 5
Sample Output
4
Solution:
先来分析一下题目模型:
有一颗n(n<=16000)个节点的树,每个节点都有一个权值k(-1000<=k<=1000),
求这颗树的一颗子树,使得子树的所有节点的权值和最大.
假设已经选择了一些点,对于于他相邻的点,求出相邻点的连通块的和的最大值,如果这个值大于0,那么久把这个连通块加入选择.
DFS即可.
参考代码:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#define INf 16666
#define Maxn 0xfffffff
using namespace std;
vector<int> g[INf];
int val[INf], f[INf];
int n, x, y, tem;
int dfs (int x, int fa) {
f[x] = val[x];
for (int i = 0; i < g[x].size(); i++) {
tem=0;
if (g[x][i] != fa)
tem = dfs (g[x][i], x);
if (tem > 0) f[x] += tem;
}
return f[x];
}
int main() {
scanf ("%d", &n);
for (int i = 1; i <= n; i++) scanf ("%d", &val[i]);
for (int i = 1; i < n; i++) {
scanf ("%d %d", &x, &y);
g[x].push_back (y);
g[y].push_back (x);
}
dfs (1, -1);
int ans = -Maxn;
for (int i = 1; i <=n; i++)
ans = max (ans, f[i]);
printf ("%d", ans);
}
SGU 143.Long Live the Queen(女王万岁)的更多相关文章
- 143. Long Live the Queen 树形dp 难度:0
143. Long Live the Queen time limit per test: 0.25 sec. memory limit per test: 4096 KB The Queen of ...
- SGU 分类
http://acm.sgu.ru/problemset.php?contest=0&volume=1 101 Domino 欧拉路 102 Coprime 枚举/数学方法 103 Traff ...
- SGU 乱乱开
本解题报告 乱抄,乱写,随性随心,不喜多喷! SGU 142: 思路:一个string的字串不会超过2^20个,我们枚举出来就好了. 我出错点:数组RE #include<stdio.h> ...
- 今日SGU 5.8
SGU 109 题意:一个n*n的矩形,起点在1,1然后每次给你一个操作,走ki步,然后你可以删除任意一个点这次步走不到的,删了就不能再走了,然后问构造这种操作,使得最后删除n*n-1个点 剩下一个点 ...
- SGU Volume 1
SGU 解题报告(持续更新中...Ctrl+A可看题目类型): SGU101.Domino(多米诺骨牌)------------★★★type:图 SGU102.Coprimes(互质的数) SGU1 ...
- SGU 495. Kids and Prizes
水概率....SGU里难得的水题.... 495. Kids and Prizes Time limit per test: 0.5 second(s)Memory limit: 262144 kil ...
- ACM: Long Live the Queen - 树上的DP
Long Live the Queen Time Limit:250MS Memory Limit:4096KB 64bit IO Format:%I64d & %I64u D ...
- ACM: SGU 101 Domino- 欧拉回路-并查集
sgu 101 - Domino Time Limit:250MS Memory Limit:4096KB 64bit IO Format:%I64d & %I64u Desc ...
- 【SGU】495. Kids and Prizes
http://acm.sgu.ru/problem.php?contest=0&problem=495 题意:N个箱子M个人,初始N个箱子都有一个礼物,M个人依次等概率取一个箱子,如果有礼物则 ...
随机推荐
- -_-#【邮件】qq邮箱不显示图片
干货分享之邮件营销QQ邮箱IP白名单服务申请
- Spark使用CombineTextInputFormat缓解小文件过多导致Task数目过多的问题
目前平台使用Kafka + Flume的方式进行实时数据接入,Kafka中的数据由业务方负责写入,这些数据一部分由Spark Streaming进行流式计算:另一部分数据则经由Flume存储至HDFS ...
- ANT的下载和安装
下载 下载页面:http://ant.apache.org/bindownload.cgi 安装 撰写本文的时候,最新的ANT版本是1.9.7,它是绿色软件,解压缩得到apache-ant-1.9.7 ...
- hdoj 2647 Reward【反向拓扑排序】
Reward Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- String的成员方法的使用
<%@ page language="java" contentType="text/html; charset=gbk"%> <html&g ...
- java 实现 DES加密 解密算法
DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥:Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种: ...
- UIButton图文上下对齐
- (void)centerImageAndTitle:(float)spacing { // get the size of the elements here for readability CG ...
- 【LeetCode】Best Time to Buy and Sell Stock
Say you have an array for which the ith element is the price of a given stock on day i. If you were ...
- Mate8的麒麟950怎么样? 4个问题待解决
今天下午,华为在上海发布了传闻已久的旗舰智能手机Mate 8.这款手机可以算是国产手机的佼佼者,不光在外观.功能等常规元素上达到旗舰级别,更有特色的是它采用了华为自行研发的手机SOC芯片麒麟950.目 ...
- Java序列化之Serializable
Java的序列化流程如下: Java的反序列化流程如下: 注意:并不是所有类都需要进行序列化,主要原因有两个 1)安全问题.Java中有的类属于敏感类,此类的对象数据不便对外公开,而序列化的对象数据很 ...