挺简单的一道数据结构。。。

首先考虑这个“改造”的本质,很明显是把一颗子树塞到了另一个节点下面。

考虑一个节点可能成为重心的条件。条件很明显是只有一颗子树的大小大于 \(\frac n 2\),否则一定不行。

考虑将这个子树的一个子树塞到我的别的子树中去。假设最大的子树大小是 \(x\),最小的子树大小是 \(y\),那么必须要找到 \(x\) 的一颗子树 \(s\) 满足 \(x-siz[s] \leq \frac n 2 \And y+siz[s] \leq \frac n 2\)。

问题转化为询问 \(x\) 是否有一个子树满足 \(x-\frac n 2 \leq siz[s] \leq y+\frac n 2\),这个问题可以由树套树来解决。

另一个操作就是在换根时,维护子树对应的大小。注意到换根只会对应到一条边,只会改变这两个节点的 \(siz\) 值,所以直接维护就好了。

复杂度是 \(O(n\log^2n)\),但是有没有更简单的方法?

考虑到一个节点的 \(siz\) 只有 \(siz\) 和 \(n-siz\) 两种,并且一个节点的子树大小为 \(n-siz\) 时只有可能在 \(u\) 到 \(1\) 的路径上,考虑直接询问 \(dfn\) 序上区间的权值在给定权值区间中数的数量,最后减去这一段。

至于这一段,在换根的时候可以开一颗权值树来询问。

离线下来做这个相当于二维前缀和,使用树状数组可以轻松做到 \(O(n\log n)\) 小常数。

CF708C题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. vue3 最长递增子序列 diff优化

    //vue3优化版(回头我会完善下算法思路) function getSequence(arr) { const p = arr.slice() const result = [0] let i, j ...

  2. 直播流媒体EasyDSS

    访问官方 http://www.easydss.com/ 点击试用下载 根据不同需求 选择不同版本 (我选择的右边) 下载完解压 双击 start.bat 看见如下图则成功 网页输入 http://i ...

  3. python——虚拟环境管理大合集

    个人常用:pipenv 安装 pip3 install pipenv 创建虚拟环境 # 默认安装在~/.local/virtualenv下 mkdir project cd project pipen ...

  4. 9、Selenium grid2

    P228--Selenium Grid2 P233--Selenium Grid 工作原理 P236--Remote 应用 P246--WebDriver 驱动 driver = webdriver. ...

  5. 系统C盘空间严重的不足的几个清理方法

    大家在电脑使用久了以后,往往会遇到C盘空间不足的问题,这很可能进一步导致磁盘空间不足,软件无法正常运行,甚至电脑严重卡顿等问题. 下面给大家分享一些我自己在C盘空间不足过程中搜集的一些清理C盘空间的实 ...

  6. 震惊!!!!!!!靠sort水过二叉堆的天秀操作

  7. JDK中线程中实现同步等待闭环的一种方式

    实际Thread类自带的join方法就实现了线程同步等待,具体可以通过案例实践,如下: 本文的重点不是join,而是另一种设计的同步等待实现,涉及的关键类有:Thread.Runable.Callab ...

  8. Spring常用配置使用示例

    上篇介绍了Spring配置的基本情况,本篇介绍Spring常用配置具体如何使用.关于基础的配置,比如Configuration之类的就不示例,主要示例相对用的比较多同时可能比较复杂的标签或属性. 1) ...

  9. node打标签、污点

    标签 1.查看当前节点的标签 kubectl get node --show-labels 2.给节点打标签 kubectl label node nodename key=value. 3.删除标签 ...

  10. FireWall、UTM、GAP、抗DDOS防火墙

    1.信息安全产品分类 1)美国标准分类(NIST-SP800-36) NIST SP800系列标准 SP800是美国NIST(National Institute of Standards and T ...