CodeForces 1324F Maximum White Subtree
题意
给定一棵\(n\)个节点的无根树,每个节点为黑色或者白色,每个点的答案为包含该点的子树(指无根子树)的白色节点数减黑色节点数的最大值
分析
对于无根树的题一般指定某一个点为根,不妨设为\(1\)
我们发现对于\(1\)号节点,他的某棵子树(将\(1\)视为根)如果白色节点数大于黑色节点数,则他的答案加上该差值
我们先采用树形\(DP\)将所有节点都这样统计一遍,这样就获得了来自子树的贡献
即\(a[i]\)为以\(i\)为根,所有白色节点数大于黑色节点数的子树的贡献
然后对于除\(1\)节点以外所有节点,还需要统计与父亲这一棵无向子树的关系
设遍历到\(now\)节点,子树节点为\(to\)节点
\(a[to]>0\),则\(now\)的答案子树包括\(to\)节点,\(to\)节点选择\(now\)的答案子树和\(to\)的答案子树中的最大值(因为已经包括,所以不是加和)
\[a[to] = max(a[to], a[now])
\]\(a[to]\leq0\),则\(now\)的答案子树不包括\(to\)节点,\(to\)节点选择与\(now\)的答案子树进行拼接或不拼接的最大值(因为不包括,所以是加和)
\[a[to] = max(a[to], a[now] + a[to])
\]
#pragma GCC optimize(3, "Ofast", "inline")
#include <bits/stdc++.h>
#define start ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define ll long long
#define int ll
#define ls st<<1
#define rs st<<1|1
#define pii pair<int,int>
using namespace std;
const int maxn = (ll) 3e5 + 5;
const int mod = 1000000007;
const int inf = 0x3f3f3f3f;
vector<int> v[maxn];
int a[maxn];
void dfs(int now, int pre) {
for (auto &to:v[now]) {
if (to == pre)
continue;
dfs(to, now);
if (a[to] > 0)
a[now] += a[to];
}
}
void dfs2(int now, int pre) {
for (auto &to:v[now]) {
if (to == pre)
continue;
if (a[to] > 0)
a[to] = max(a[to], a[now]);
else
a[to] = max(a[to], a[now] + a[to]);
dfs2(to, now);
}
}
signed main() {
start;
int n;
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> a[i];
if (a[i] == 0)
a[i] = -1;
}
for (int i = 1; i < n; ++i) {
int x, y;
cin >> x >> y;
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1, 0);
dfs2(1, 0);
for (int i = 1; i <= n; ++i)
cout << a[i] << ' ';
return 0;
}
CodeForces 1324F Maximum White Subtree的更多相关文章
- Codeforces 1324F Maximum White Subtree DFS
题意 给你无根一颗树,每个节点是黑色或白色.对于每一个节点,问包含该节点的权值最大的子树. 子树的权值等于子树中白点的个数减去黑点的个数. 注意,这里的子树指的是树的联通子图. 解题思路 这场就这题卡 ...
- CF1324 --- Maximum White Subtree
CF1324 --- Maximum White Subtree 题干 You are given a tree consisting of \(n\) vertices. A tree is a c ...
- Codeforces Round #627 (Div. 3) F - Maximum White Subtree(深度优先搜索)
题意: n 个点 n - 1 条边的树,问每个点所在所有子树中白黑点数目的最大差. 思路: 白点先由下至上汇集,后由上至下分并. #include <bits/stdc++.h> usin ...
- CF1324F Maximum White Subtree 题解
原题链接 简要题意: 给定一棵树,每个点有黑白两种颜色:对每个节点,求出包含当前节点的连通图,使得白点数与黑点数差最小.输出这些值. F题也这么简单,咳咳,要是我也熬夜打上那么一场...可惜没时间打啊 ...
- CF1324F Maximum White Subtree——换根dp
换根dp,一般用来解决在无根树上,需要以每个节点为根跑一边dfs的dp问题 我们做两遍dfs 先钦定任意一个点为根 第一遍,算出\(f_i\)表示\(i\)的子树产生的答案,这里,子树指的是以我们钦定 ...
- Codeforces 484B Maximum Value(高效+二分)
题目链接:Codeforces 484B Maximum Value 题目大意:给定一个序列,找到连个数ai和aj,ai%aj尽量大,而且ai≥aj 解题思路:类似于素数筛选法的方式,每次枚举aj,然 ...
- Codeforces C. Maximum Value(枚举二分)
题目描述: Maximum Value time limit per test 1 second memory limit per test 256 megabytes input standard ...
- [Leetcode] 1120. Maximum Average Subtree
Given the root of a binary tree, find the maximum average value of any subtree of that tree. (A subt ...
- [codeforces 508E]Maximum Matching
题目:Maximum Matching 传送门:http://codeforces.com/contest/1038/problem/E 分析: 一个块拥有{color1,val,color2},两个 ...
- 【LeetCode】1120. Maximum Average Subtree 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS 日期 题目地址:https://leetcod ...
随机推荐
- idea构建grpc项目
转载请注明出处: 安装protocbuf插件 idea 建议下载一个 protobuf的插件, 可以有代码提示. 这里直接去pluging里搜就行了. 在idea的plugins中搜索proto,然后 ...
- 数学建模 Excel的批量写入与批量导出
数学建模中编程手们常常会被要求将大量的数据进行批量的预测操作,并写入某个文件中 Excel的批量导出数据,用循环就可以简单实现,例如 import pandas as pd for i in list ...
- GPT虚拟直播Demo系列(二)|无人直播间实现虚拟人回复粉丝
摘要 虚拟人和数字人是人工智能技术在现实生活中的具体应用,它们可以为人们的生活和工作带来便利和创新.在直播间场景里,虚拟人和数字人可用于直播主播.智能客服.营销推广等.接入GPT的虚拟人像是加了超强b ...
- Python连接es笔记三之es更新操作
本文首发于公众号:Hunter后端 原文链接:Python连接es笔记三之es更新操作 这一篇笔记介绍如何使用 Python 对数据进行更新操作. 对于 es 的更新的操作,不用到 Search() ...
- ARC143
ARC143 考试情况:一眼订正,鉴定为做出前三题. A - Three Integers 以前做过 \(n\) 个数的版本,当时还被某人嘲讽说"堆,贪心,这都做不出来?". \( ...
- 深入浅出MySQL - 架构与执行
Photo by Merilin Kirsika Tedder from Pexels 一.MySQL的逻辑架构 MySQL作为一个流行的开源关系型数据库管理系统,它可以运行在多种平台上,支持多种存储 ...
- 手牵手带你实现mini-vue
1 前言 随着 Vue.React.Angularjs 等框架的诞生,数据驱动视图的理念也深入人心,就 Vue 来说,它拥有着双向数据绑定.虚拟dom.组件化.视图与数据相分离等等造福程序员的优点,那 ...
- 论文日记一:AlexNet
1.导读 ALexNet在2012图像识别竞赛中ILSVRC大放异彩,直接将错误了降低了近10个百分点. 论文<ImageNet Classification with Deep Convolu ...
- ES 实战复杂sql查询、修改字段类型
转载请注明出处: 1.查询索引得 mapping 与 setting get 直接查询 索引名称时,会返回 该 索引得 mapping 和 settings 得配置,上述返回得结构如下: { &quo ...
- .NET Core中关于阿拉伯语环境下的坑:Input string was not in a correct format.
结论 .NET Core项目(.NET Framework没出现)在阿拉伯语(即语言名称是ar-开头的语言)环境下,将负数字符串转成数字,即int.Parse("-1")或Conv ...