【Luogu3478】【POI2008】STA-Station(动态规划)
【Luogu3478】【POI2008】STA-Station(动态规划)
题面
题目描述
给出一个\(N(2<=N<=10^6)\)个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大
题解
考虑直接对于每个点计算一次
时间复杂度\(O(n^2)\)显然无法接受
所以,考虑只进行一次\(DFS\)在通过递推求解
如果已经知道根节点的答案的话
那么,他的儿子节点很容易的可以递推出来:
\(Ans{[son]}=Ans[father]+n-2*size[son]\)
所以可以\(O(n)\)求解
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
using namespace std;
#define MAX 1200000
#define ll long long
inline int read()
{int x=0,t=1;char ch=getchar();while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();if(ch=='-')t=-1,ch=getchar();while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();return x*t;
}
struct Line
{int v,next;
}e[MAX<<1];
int h[MAX],cnt=1;
int n;
ll dep[MAX],sum[MAX],size[MAX];
ll ans[MAX];
inline void Add(int u,int v)
{e[cnt]=(Line){v,h[u]};h[u]=cnt++;
}
void dfs(int u,int ff)
{sum[u]=dep[u]=dep[ff]+1;size[u]=1;for(int i=h[u];i;i=e[i].next){int v=e[i].v;if(v==ff)continue;dfs(v,u);size[u]+=size[v];sum[u]+=sum[v];}
}
void DFS(int u,int ff)
{for(int i=h[u];i;i=e[i].next){int v=e[i].v;if(v==ff)continue;ans[v]=ans[u]+n-2*size[v];DFS(v,u);}
}
int main()
{n=read();for(int i=1;i<n;++i){int u=read(),v=read();Add(u,v);Add(v,u);}dfs(1,0);ans[1]=sum[1];DFS(1,0);int pos=1;for(int i=1;i<=n;++i)if(ans[i]>ans[pos])pos=i;printf("%d\n",pos);return 0;
}
转载于:https://www.cnblogs.com/cjyyb/p/7812929.html
【Luogu3478】【POI2008】STA-Station(动态规划)相关推荐
- bzoj1131[POI2008]Sta*
bzoj1131[POI2008]Sta 题意: 给出一个n个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大.n≤1000000. 题解: 两次dfs.第一次dfs维护子树的大小.节点 ...
- bzoj 1131: [POI2008]Sta(DPS)
1131: [POI2008]Sta Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1705 Solved: 640 [Submit][Statu ...
- [BZOJ1131][POI2008]Sta
Description 给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大 Input 给出一个数字N,代表有N个点.N<=1000000 下面N-1条边. Output ...
- bzoj1131: [POI2008]Sta
二次扫描+换根 有点困思路不清晰啊 #include<cstdio> #include<iostream> #include<cstring> #include&l ...
- WIFI的AP(Access Point)和STA(Station)指什么
转载地址:https://www.cnblogs.com/ricks/p/9519493.html 1):AP,也就是无线接入点,是一个无线网络的创建者,是网络的中心节点.一般家庭或办公室使用的无线路 ...
- WiFi的STA和AP模式指什么?
WiFi的STA和AP模式指什么? 1):AP,也就是无线接入点,是一个无线网络的创建者,是网络的中心节点.一般家庭或办公室使用的无线路由器就一个AP. 2):STA站点,每一个连接到无线网络中的终端 ...
- WIFI AP和STATION
WIFI AP和STATION AP STA站点 AP和STA AP AP,也就是无线接入点,是一个无线网络的创建者,是网络的中心节点.一般家庭或办公室使用的无线路由器就一个AP STA站点 每一个连 ...
- WiFi的STA和AP模式及相关概念
基本概念 1):AP,也就是无线接入点,是一个无线网络的创建者,是网络的中心节点.一般家庭或办公室使用的无线路由器就一个AP. 2):STA站点,每一个连接到无线网络中的终端(如笔记本电脑.PDA及其 ...
- RT3070无线网卡STA模式并使开发板接入Wifi上网
开发板:FL2440 内核:linux 3.0 无线网卡:RT3070 RT3070的工作模式分为 STA(station)模式.SoftAP(Access Point)模式两种. STA模 ...
- 【IoT】物联网 WIFI 之 AP、STA、SSID、BSSID 概念基础
AP(Access Point): 无线接入点,是一个无线网络的创建者,是网络的中心节点.一般家庭或办公室使用的无线路由器就是一个AP: STA(Station): 任何一个接入无线AP的设备都可以称 ...
最新文章
- 《JavaScript面向对象精要》——1.8 原始封装类型
- one of the variables needed for gradient computation has been modified by an inplace
- 测试数据精准对比的思考
- 关于ASP.NET MVC的业务逻辑验证(validation)
- json解析数组 nlohmann_JSON 数组的遍历解析
- qt如和调用linux底层驱动_擅长复杂硬件体系设计,多核系统设计,以及基于RTOS或者Linux,QT等进行相关底层驱动。...
- 概要设计说明书_没有什么比牙签更好的设计了
- *使用配置类定义Codeigniter全局变量
- mysql定时event创建每隔一天_mysql用event设置定时任务
- delphi 实现最小化系统托盘
- 测试-分辨率兼容测试
- vpp自动化测试报错调试
- 三、FreeNas实现SMB共享、FTP搭建实验报告
- 下载网页或者微信公众号中视频的方法详细介绍
- 常见的计算机查询语言,利用SQL语句查询SCCM常用报表
- Ubuntu解决文件带锁问题
- [答疑]举报卖家、举报买家还是举报
- 麦克风MIC 工作原理以及灵敏度调整
- roboguide仿真 机器人轨迹绕圈走
- 安装纯净版win10系统
热门文章
- 数据结构c语言pdf2007,数据结构(C语言)严蔚敏 吴伟明 编著 07.pdf
- 如何隐藏地址栏中的真实地址_代理IP如何隐藏真实IP
- postgre非零相除等于0_LeetCode刷题实战29:两数相除
- python类中导入库_python导入库的具体方法
- 逻辑回归与梯度下降法
- tpc ds 导入到oracle,用TPC-DS测试Sql server,Oracle
- 运动目标跟踪(八)--时空上下文(STC)跟踪原理
- linux 进程间广播,Linux系统编程之进程间通信之浅谈信号
- matlab 删掉空行,在MATLAB中使用XLSWRITE:如何删除空单元格?
- JAVA清稿word_java开发实现word在线编辑及流转