CF685B Kay and Snowflake 贪心
CF685B Kay and Snowflake
链接
题目大意
给你一颗树,询问子树的重心
思路
贪心?
重心肯定是向上走的,所以直接向上跳就好了。
不优秀的时候就不要跳了 ,因为以后也不能更新了。
复杂度O(n)(没大仔细想过)
代码
#include <bits/stdc++.h>
using namespace std;
const int N=3e5+7;
int read() {
int x=0,f=1;char s=getchar();
for(;s>'9'||s<'0';s=getchar()) if(s=='-') f=-1;
for(;s>='0'&&s<='9';s=getchar()) x=x*10+s-'0';
return x*f;
}
vector<int> G[N];
int n,m,siz[N],ans[N],fa[N],ma[N];
void dfs_siz(int u) {
siz[u]++;
for(vector<int>::iterator v=G[u].begin();v!=G[u].end();++v) {
dfs_siz(*v);
siz[u]+=siz[*v];
ma[u]=max(ma[u],siz[*v]);
}
}
void dfs(int u) {
ans[u]=u;
for(vector<int>::iterator v=G[u].begin();v!=G[u].end();++v) {
dfs(*v);
int tmp=ans[*v],now=ma[u];
while(tmp!=u) {
if(max(ma[tmp],siz[u]-siz[tmp]) < now) {
now=max(ma[tmp],siz[u]-siz[tmp]);
ans[u]=tmp;
}
if(ma[tmp]>siz[u]-siz[tmp]) break;
tmp=fa[tmp];
}
}
}
int main() {
// freopen("a.in","r",stdin);
n=read(),m=read();
for(int i=2;i<=n;++i) {
fa[i]=read();
G[fa[i]].push_back(i);
}
dfs_siz(1);
dfs(1);
for(int i=1;i<=m;++i) printf("%d\n",ans[read()]);
return 0;
}
CF685B Kay and Snowflake 贪心的更多相关文章
- B. Kay and Snowflake 解析(思維、DFS、DP、重心)
Codeforce 685 B. Kay and Snowflake 解析(思維.DFS.DP.重心) 今天我們來看看CF685B 題目連結 題目 給你一棵樹,要求你求出每棵子樹的重心. 前言 完全不 ...
- Codeforces Round #359 (Div. 2) D. Kay and Snowflake 树DP
D. Kay and Snowflake After the piece of a devilish mirror hit the Kay's eye, he is no longer int ...
- Codeforces Round #359 (Div. 2) D. Kay and Snowflake 树的重心
题目链接: 题目 D. Kay and Snowflake time limit per test 3 seconds memory limit per test 256 megabytes inpu ...
- Codeforces Round #359 (Div. 2) D - Kay and Snowflake
D - Kay and Snowflake 题目大意:给你一棵数q个询问,每个询问给你一个顶点编号,要你求以这个点为根的子树的重心是哪个节点. 定义:一棵树的顶点数为n,将重心去掉了以后所有子树的顶点 ...
- Codeforces 686 D - Kay and Snowflake
D - Kay and Snowflake 思路: 树的重心 利用重心的一个推论,树的重心必定在子树重心的连线上. 然后利用重心的性质,可知,如果有一颗子树的大小超过整棵树的大小的1/2,那么树的重心 ...
- Codeforces Round #359 (Div. 1) B. Kay and Snowflake dfs
B. Kay and Snowflake 题目连接: http://www.codeforces.com/contest/685/problem/B Description After the pie ...
- codeforces 686D D. Kay and Snowflake(dfs)
题目链接: D. Kay and Snowflake time limit per test 3 seconds memory limit per test 256 megabytes input s ...
- Kay and Snowflake CodeForces - 686D
Kay and Snowflake CodeForces - 686D 题意:给一棵有根树,有很多查询(100000级别的),查询是求以任意一点为根的子树的任意重心. 方法很多,但是我一个都不会 重心 ...
- 【24.63%】【codefroces 686D】Kay and Snowflake
time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standa ...
随机推荐
- Python_tkinter(4)_上传文件
1.上传单个文件 import tkinter as tk from tkinter import filedialog def upload_file(): selectFile = tk.file ...
- PHPstorm 2017激活
网上看了很多,有用没几个.特别亲身试验了下.有一个有用的.摘录下来.备忘. 感谢该篇博文的作者.https://blog.csdn.net/veloi/article/details/71307942 ...
- echo 与 printf的区别与联系
echo命令默认是带有换行符的. 如果想让echo命令去掉每一行后面的换行符 方法1; 如果确信自己的脚本程序只运行在bash上,可以使用如下语法来出去空格: echo -n "Is it ...
- ESP8266 RTOS SDK烧写环境构建
简介 esptool是一个Python软件程序,适用于ESP8266等一系列芯片的烧写,灵活高效. 环境构建 在官网下载安装最新2.7版python (linux和os x一般会自带python2.7 ...
- Mysql 5.7优化
为了达到数据库胡最佳性能 1. 普通用户通过配置软件与硬件来实现 2. 高级用户会寻求机会改善MySQL本身,开发自己的数据存储引擎,硬件应用. 在数据库层面的优化 1. 表设计,通常列有适合的数据类 ...
- webpack基础小结。
想写写webpack的学习体验的小结,加深自己的理解和使用技能,顺便过一下文档(4.0的功能感觉还是满好玩的). 本文主简写描述webpack中对各种文件的简单处理 基本知识点 处理js 加载css文 ...
- Leetcode: Number Complement
Given a positive integer, output its complement number. The complement strategy is to flip the bits ...
- 基于C#的Appium自动化测试框架(Ⅰ):程序结构
因为工作原因,使用的编程语言都是C#,但是国内相应的Appium资料少得可怜,Java版本的Appium也考虑过,但是奈何自己搞不定Eclipse这个编译环境[说白了就是因为懒…… 无意中看到了外面的 ...
- PyCharm:no module named * 解决方法
1.成功安装模块,无法导入 今天安装完模块pyppeteer,pycharm导入失败,从python的Lib下可以清楚的看到已经安装成功 2.添加当前python环境,不使用默认项目的环境 file& ...
- Dungeon Master (广搜)
问题描述: You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed ...