【题解】Luogu p3478 [POI2008]STA-Station 动态规划
题目描述
给出一个$N$个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大
输入输出格式
输入格式
第一行一个数$n$,表示树上共有$n$个点
接下来$n-1$行,表示$n-1$条边;每行两个数,表示这条边的两个端点
输出格式
一个数,表示以该节点为根时,所有点的深度之和最大
思路
- 设$u$为$v$的父节点
- 用$f[u]$表示以u为根节点时的最大深度和,用$size[u]$表示u的子树大小
- 以$u$为根的树,变成以儿子$v$为根的树,
- 那么所有在$v$的子树上的节点的深度都会减1,深度和就会减少$size[v]$,
- 所有不在$v$的子树上的节点的深度都会+1,深度和就会加上$n-size[v]$;
得到公式
$$f[v]=f[u]+n-2*size[v]$$
- 所以,只需求出以1为根节点时的深度和;剩下的答案都可以递推出来
代码
#include<cmath>
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#define re register int
using namespace std;
int const maxn=1e6+50;
inline int read(){
int x=0,w=1;
char ch=getchar();
while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
if(ch=='-') w=-1,ch=getchar();
while(ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+ch-48,ch=getchar();
return x*w;
}
long long sum[maxn],size[maxn],ans[maxn];
int tot=1,dep[maxn],n,h[maxn];
struct data {
int v,next;
}e[maxn<<1];
inline void add(int u,int v) {
e[tot].v=v;
e[tot].next=h[u];
h[u]=tot++;
}
void dfs(int u,int f){
sum[u]=dep[u]=dep[f]+1;size[u]=1;
for(re i=h[u];i;i=e[i].next) {
int v=e[i].v;
if(v==f) continue;
dfs(v,u);
size[u]+=size[v];
sum[u]+=sum[v];
}
}
void DFS(int u,int f) {
for(re i=h[u];i;i=e[i].next) {
int v=e[i].v;
if(v==f) continue;
ans[v]=ans[u]+n-2*size[v];
DFS(v,u);
}
}
int main() {
n=read();
for(re i=1,a,b;i<n;++i) {
a=read(),b=read();
add(a,b);add(b,a);
}
dfs(1,0);
ans[1]=sum[1];
DFS(1,0);
int pos=0;
for(re i=1;i<=n;++i) {
if(ans[pos]<ans[i]) pos=i;
}
printf("%d\n",pos);
return 0;
} /*
8
1 4
5 6
4 5
6 7
6 8
2 4
3 4 */
【题解】Luogu p3478 [POI2008]STA-Station 动态规划的更多相关文章
- 1131: [POI2008]Sta
1131: [POI2008]Sta Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 783 Solved: 235[Submit][Status] ...
- bzoj 1131 [POI2008]Sta 树形dp 转移根模板题
[POI2008]Sta Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1889 Solved: 729[Submit][Status][Discu ...
- 洛谷P3478 [POI2008]STA-Station
P3478 [POI2008]STA-Station 题目描述 The first stage of train system reform (that has been described in t ...
- BZOJ 1131: [POI2008]Sta( dfs )
对于一棵树, 考虑root的答案向它的孩子转移, 应该是 ans[son] = (ans[root] - size[son]) + (n - size[son]). so , 先 dfs 预处理一下, ...
- CJOJ 1087 【NOIP2010】乌龟棋 / Luogu 1541 乌龟棋(动态规划)
CJOJ 1087 [NOIP2010]乌龟棋 / Luogu 1541 乌龟棋(动态规划) Description 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 乌龟棋的棋盘是一行N个格子,每个 ...
- CJOJ 1131 机器分配 / Luogu 2066 机器分配 (动态规划)
CJOJ 1131 机器分配 / Luogu 2066 机器分配 (动态规划) Description Luogu: 总公司拥有高效设备M台,准备分给下属的N个分公司.各分公司若获得这些设备,可以为国 ...
- Luogu 1063 能量项链(动态规划)
Luogu 1063 能量项链(动态规划) Description 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某 ...
- Luogu 1020 导弹拦截(动态规划,最长不下降子序列,二分,STL运用,贪心,单调队列)
Luogu 1020 导弹拦截(动态规划,最长不下降子序列,二分,STL运用,贪心,单调队列) Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺 ...
- Luogu 1220 关路灯(动态规划)
Luogu 1220 关路灯(动态规划) Description 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项 ...
随机推荐
- Jmeter(一) - 从入门到精通 - 环境搭建(详解教程)
1.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件, ...
- zimbra安装ssl证书
zimbra在后台安装证书签发机构签发证书出现时候出现错误:{RemoteManager: mail.domain.com->zimbra@mail.domain.com:22} com.zim ...
- curl: (35) SSL connect error
curl: (35) SSL connect error weixin_34212762 2018-02-23 20:16:23 230 收藏 文章标签: 运维 版权 阿里云的机器,昨晚githu ...
- sosreport命令 然后diff 正常的操作系统例如centos
nux学习笔记:有用的linux命令 发表于 2018-06-25 | 分类于 linux| 字数统计: 1,269 | 阅读时长 ≈ 6 写在前面 这着笔记,整理一些网上搜集到有用的linu ...
- Zabbix 常用术语
Zabbix 常用术语 1.主机(host) 一台你想监控的网络设备,用IP或域名表示 2.主机组(host group) 主机的逻辑组;它包含主机和模板.-个主机组里的主机和模板之间并没有任何直接的 ...
- ubuntu查看已安装软件包信息的方法
ubuntu查看已安装软件包信息的方法原创fang141x 最后发布于2019-04-15 10:41:34 阅读数 2802 收藏展开简介ubuntu下面是使用dpkg来管理和安装软件包的,对应ce ...
- gcc 版本
$ gcc --versiongcc (Ubuntu 5.4.0-6kord1~16.04.4k2) 5.4.0 20160609Copyright (C) 2015 Free Software Fo ...
- 在虚拟机中安装 Ubuntu
https://www.cnblogs.com/huohu121/p/12250869.html 火狐python 博客园 首页 新随笔 联系 订阅 管理 随笔 - 54 文章 - 0 评论 - ...
- Scala 中 object、class 与 trait 的区别
Scala 中 object.class 与 trait 的区别 引言 当你刚入门 Scala,肯定会迫不及待想要编写自己的第一个 Scala 程序.如果你已经在交互模式下敲过 Scala 代码,想必 ...
- 那些天,shell脚本中曾经踩过的坑
前些天,需要实现一个需求,用脚本轮流kill服务器上的进程,观察内存变化情况,并写日志.脚本逻辑不难,但shell脚本好久不用,看过书里的语法都忘得差不多了,中间踩了不少的坑,特此记录一下,留作后续参 ...