【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(动态规划)相关推荐

  1. bzoj1131[POI2008]Sta*

    bzoj1131[POI2008]Sta 题意: 给出一个n个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大.n≤1000000. 题解: 两次dfs.第一次dfs维护子树的大小.节点 ...

  2. bzoj 1131: [POI2008]Sta(DPS)

    1131: [POI2008]Sta Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1705  Solved: 640 [Submit][Statu ...

  3. [BZOJ1131][POI2008]Sta

    Description 给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大 Input 给出一个数字N,代表有N个点.N<=1000000 下面N-1条边. Output ...

  4. bzoj1131: [POI2008]Sta

    二次扫描+换根 有点困思路不清晰啊 #include<cstdio> #include<iostream> #include<cstring> #include&l ...

  5. WIFI的AP(Access Point)和STA(Station)指什么

    转载地址:https://www.cnblogs.com/ricks/p/9519493.html 1):AP,也就是无线接入点,是一个无线网络的创建者,是网络的中心节点.一般家庭或办公室使用的无线路 ...

  6. WiFi的STA和AP模式指什么?

    WiFi的STA和AP模式指什么? 1):AP,也就是无线接入点,是一个无线网络的创建者,是网络的中心节点.一般家庭或办公室使用的无线路由器就一个AP. 2):STA站点,每一个连接到无线网络中的终端 ...

  7. WIFI AP和STATION

    WIFI AP和STATION AP STA站点 AP和STA AP AP,也就是无线接入点,是一个无线网络的创建者,是网络的中心节点.一般家庭或办公室使用的无线路由器就一个AP STA站点 每一个连 ...

  8. WiFi的STA和AP模式及相关概念

    基本概念 1):AP,也就是无线接入点,是一个无线网络的创建者,是网络的中心节点.一般家庭或办公室使用的无线路由器就一个AP. 2):STA站点,每一个连接到无线网络中的终端(如笔记本电脑.PDA及其 ...

  9. RT3070无线网卡STA模式并使开发板接入Wifi上网

    开发板:FL2440    内核:linux 3.0   无线网卡:RT3070 RT3070的工作模式分为 STA(station)模式.SoftAP(Access Point)模式两种. STA模 ...

  10. 【IoT】物联网 WIFI 之 AP、STA、SSID、BSSID 概念基础

    AP(Access Point): 无线接入点,是一个无线网络的创建者,是网络的中心节点.一般家庭或办公室使用的无线路由器就是一个AP: STA(Station): 任何一个接入无线AP的设备都可以称 ...

最新文章

  1. 《JavaScript面向对象精要》——1.8 原始封装类型
  2. one of the variables needed for gradient computation has been modified by an inplace
  3. 测试数据精准对比的思考
  4. 关于ASP.NET MVC的业务逻辑验证(validation)
  5. json解析数组 nlohmann_JSON 数组的遍历解析
  6. qt如和调用linux底层驱动_擅长复杂硬件体系设计,多核系统设计,以及基于RTOS或者Linux,QT等进行相关底层驱动。...
  7. 概要设计说明书_没有什么比牙签更好的设计了
  8. *使用配置类定义Codeigniter全局变量
  9. mysql定时event创建每隔一天_mysql用event设置定时任务
  10. delphi 实现最小化系统托盘
  11. 测试-分辨率兼容测试
  12. vpp自动化测试报错调试
  13. 三、FreeNas实现SMB共享、FTP搭建实验报告
  14. 下载网页或者微信公众号中视频的方法详细介绍
  15. 常见的计算机查询语言,利用SQL语句查询SCCM常用报表
  16. Ubuntu解决文件带锁问题
  17. [答疑]举报卖家、举报买家还是举报
  18. 麦克风MIC 工作原理以及灵敏度调整
  19. roboguide仿真 机器人轨迹绕圈走
  20. 安装纯净版win10系统

热门文章

  1. 数据结构c语言pdf2007,数据结构(C语言)严蔚敏 吴伟明 编著 07.pdf
  2. 如何隐藏地址栏中的真实地址_代理IP如何隐藏真实IP
  3. postgre非零相除等于0_LeetCode刷题实战29:两数相除
  4. python类中导入库_python导入库的具体方法
  5. 逻辑回归与梯度下降法
  6. tpc ds 导入到oracle,用TPC-DS测试Sql server,Oracle
  7. 运动目标跟踪(八)--时空上下文(STC)跟踪原理
  8. linux 进程间广播,Linux系统编程之进程间通信之浅谈信号
  9. matlab 删掉空行,在MATLAB中使用XLSWRITE:如何删除空单元格?
  10. JAVA清稿word_java开发实现word在线编辑及流转