【codeforces379F】 New Year Tree
2024-10-20 11:34:34
距离一个点最远的点一定是直径的一个端点。
考虑运用这个原理,每次维护一下直径端点即可。
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std; #define N 500010
#define M 20 int dep[N<<],f[M][N<<]; int n;
int q,k;
int v=,m=; int main()
{
dep[]=dep[]=dep[]=;
n=;
scanf("%d",&q);
while (q--)
{
scanf("%d",&k);
k--;
f[][n]=f[][n+]=k;
dep[n]=dep[n+]=dep[k]+;
for (int i=;i<M && f[i-][f[i-][n]];i++)
f[i][n]=f[i][n+]=f[i-][f[i-][n]];
if (dep[n]>dep[v])
v=n,++m;
else if (dep[n]+dep[v]>m)
{
int x=v,y=n;
for (int i=;i<M && dep[x]!=dep[y];i++)
if ((dep[x]-dep[y]) & (<<i))
x=f[i][x];
for (int i=M-;i>=;i--)
if (f[i][x]!=f[i][y])
x=f[i][x],y=f[i][y];
if (dep[n]+dep[v]-(dep[f[][x]]<<)>m)
++m;
}
n+=;
printf("%d\n",m);
}
return ;
}
最新文章
- “RazorEngine.Templating.TemplateParsingException”类型的异常在 RazorEngine.NET4.0.dll 中发生,但未在用户代码中进行处理 其他信息: Expected model identifier.
- Leetcode 39. Combination Sum
- js获取新浪天气接口
- swift-sharesdk集成微信、Facebook第三方登录
- [OpenCVsharp]利用指针实现高速访问像素RGB值
- XML 简介
- python3 异常处理
- berkeley db replica机制 - election algorithm
- asp.net脚本获取不到id,服务器控件id生成html页面id控制
- Eclipse中添加web dynamic project
- iOS 程序打包,安装流程
- JavaScript高级编程(一)
- LiBsvm用于多分类时训练模型参数含义
- 把消息送到默认窗口函数里,并非一点用都没有,可能会产生新的消息(以WM_WINDOWPOSCHANGED为例)
- information_schema.engines学习
- 【codechef】FN/Fibonacci Number
- 训练集(train set),验证集(validation set)和测试集(test set)
- 一个简单小技巧实现手机访问.html文件网页效果
- 织梦dedecms后台文章搜索关键字,关键字包含文章内容的代码修改
- Luogu P4205 [NOI2005]智慧珠游戏