CF1187E 题解
Title translation
给定一棵 \(n\) 个点的树,初始全是白点。
要做 \(n\) 步操作,每一次选定一个与一个黑点相隔一条边的白点,将它染成黑点,然后获得该白点被染色前所在的白色联通块大小的权值。第一次操作可以任意选点,求可获得的最大权值。
Solution
如何让这道题秒降绿题呢?
先简化一下题意:
给定一个 \(n\) 个点的树,请求出一个结点,使得以这个结点为根时,所有结点的深度之和最大,求这个深度。
这不和P3478一样吗!
为何是这样?
我们换个方向思考:
因为每一次是把一个与一个黑点相隔一条边的白点染成黑点,考虑一个节点 \(v\),当这棵树的根节点是 \(v\)、\(v\) 的父亲、\(v\) 的父亲的父亲……的时候,\(v\) 都会给它们所在的联通块大小贡献 \(1\)。那它最多贡献多少个 \(1\) 呢?其实就是它自己的深度。
那题目就简化成了刚刚的那样……
Code
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int Maxn=1e6+5;
int n;vector<int>e[Maxn];
int Size[Maxn],Dep[Maxn];
int f[Maxn];
void dfs1(int u,int fa){
Size[u]=1;Dep[u]=Dep[fa]+1;
for(auto v:e[u]){
if(v==fa)continue;
dfs1(v,u);
Size[u]+=Size[v];
}
}
void dfs2(int u,int fa){
for(auto v:e[u]){
if(v==fa)continue;
f[v]=f[u]+n-2*Size[v];
dfs2(v,u);
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin>>n;
for(int i=1;i<=n-1;i++){
int u,v;cin>>u>>v;
e[u].push_back(v);
e[v].push_back(u);
}
dfs1(1,0);
for(int i=1;i<=n;i++)f[1]+=Dep[i];
dfs2(1,0);int maxn=INT_MIN,id;
for(int i=1;i<=n;i++)
if(f[i]>maxn)maxn=f[i],id=i;
cout<<maxn;
return 0;
}
CF1187E 题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
- JSOI2016R3 瞎BB题解
题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...
随机推荐
- Mongolia地区民间风俗的一些理解
声明:本文的内容为自己学习历史后的一些个人理解,其中内容的真实性并未考证. 总所周知,Mongolia地区有内外之分现在,但是以前均为我国领土,后来由于种种历史原因导致外Mongolia分离了出去,这 ...
- mysql数据库主从同步读写分离(二)读写分离实现
步骤: a.解压文件 b.添加如下配置文件 c.mysql-proxy.conf配置内容如下: 1 [mysql-proxy] 2 admin-username=proxy 3 admin-passw ...
- Ruoyi-Cloud 启动失败的坑,关于 selectConfigList
刚才编辑了一堆,不知道为啥加了个英文单词,当前页面刷新自动搜索了单词,之前的内容总的就是现在都要会SpringCloud,高并发,几个真正懂高并发的,问题一般项目也没有啥高并发.自己之前的项目遇到过高 ...
- 牛客周赛 Round 6
牛客周赛 Round 6 A-游游的数字圈_牛客周赛 Round 6 (nowcoder.com) 枚举即可 #include <bits/stdc++.h> #define int lo ...
- Linux 进程编程入门
关于进程和线程的关系,之前一口君写过这几篇文章,大家可以参考下. 本文从头带着大家一起学习Linux进程 <搞懂进程组.会话.控制终端关系,才能明白守护进程干嘛的?> <[粉丝问答6 ...
- 国产化适配——银河麒麟V10(1)
前言 为响应国家"信创"建设,公司最近在搞国产化适配,我刚好负责这搞一部分,做个记录吧. 主要包括三块:国产服务器操作系统银河麒麟V10,国产数据库人大金仓kingbase,中间件 ...
- 最全!嵌入式STM32单片机开发环境配置教学Win/Mac!!!
嵌入式STM32单片机开发环境配置教学Win/Mac · 本教程支持Windows和Mac · Windows可选的开发软件为Keil.Clion.STM32CubeMX,可自由选择开发方式 · Ma ...
- 探索一下 Enum 优化
探索一下 Enum 优化 SV.Enums主要是探索如何让 enum 更高效 其中涉及的优化手段并非完全自创 很多内容参考于以下项目 NetEscapades.EnumGenerators FastE ...
- c++学习笔记(三):函数++
函数PLUS 函数默认参数 在c++中,函数的形参列表中的形参是可以有默认值的.调用函数时,如果未传递参数的值(传入参数为空),则会使用默认值,如果指定了值,则会忽略默认值,使用传递的值. 语法:返回 ...
- bacnet mstp设备数据 转IEC61850项目案例
目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 使用YABE软件读取BACNET MSTP设备信息 2 4 配置网关采集BACNET MSTP数据 4 5 用IEC61850协议转发数据 ...