首页 > 其他分享 >LOJ#6020. 「from CommonAnts」寻找 LCT

LOJ#6020. 「from CommonAnts」寻找 LCT

时间:2024-04-10 21:59:05浏览次数:26  
标签:rt LCT cut 重心 LOJ siz son link 6020

link of problem

依旧是非常精妙的做法呢!问了神仙 lca 才知道怎么做了,目前网上是没有题解的,有的只是一份带注释的代码的英文题解

我的细节实现也是看了这份代码得以补足的。

我们定义一些量:原树重心为 rt,rt 的某个儿子叫做 son,son 子树内的某个节点为 x。

首先考虑哪些连通块大小会 \(> \lfloor \frac n2 \rfloor\)?明显的,包含 rt 的连通块。

因此这里有一个结论,我们只会删除与 rt 相邻的边,因为原来的树重心本身就将树分为 \(\leq \lfloor \frac n2 \rfloor\) 的块了。

我们的做法是求出对于每个 x,最少所需要的 cut-link 操作,判断是否 \(\leq k\) 即可。

我们先求出 rt,预处理出以 rt 为根,每个点的 siz,dep,dfn,id(dfn to point id)。

提取出所有 son 的 siz,从大到小排序(贪心地想,我们每次删除的一定是能砍掉最多的边,顺便提及,我们在每次 cut 后,总是将其 link 到 x 上,这样最好),求其前缀和数组 sum。

接着枚举 son,对于 son 的子树内的点逐一求解。

在 sum 数组上二分,我们到底需要删除多少条与 rt 相邻的边,才能让 x 作为重心。

如果你 cut 了 son,这明显是无用的,直接将二分的值加上 siz[son],相当于直接跳过了 son。

至此,大致思路已经完毕。

细节:还可能是先让 son 作为重心,再花 1 的代价挪到 x 来。

code

标签:rt,LCT,cut,重心,LOJ,siz,son,link,6020
From: https://www.cnblogs.com/acwing-gza/p/18127559

相关文章

  • 周报-LCT & KDT-2024年3月第4周
    算法笔记LCT一种神奇的数据结构,可以用来维护树的动态结构.模板很少魔改,都是基于LCT基础操作的拓展操作.find之前别忘了先pushdown.有一种比较特别的题型:动态生成树,利用LCT方便的link,cut和维护信息功能,实现多维度或者动态的生成树构造.KDT使用平衡树维护加速平面内查......
  • systemd-journal(一)之journalctl命令详解
    文章目录写在前面概述描述不传递参数传递一个或多个匹配参数示例源选项用法--system,--user-M,--machine=-m,--merge-DDIR,--directory=DIR--file=GLOB--root=ROOT--image=IMAGE--image-policy=policy--namespace=NAMESPACE过滤选项用法-S,--since=,-U,--until......
  • loj#533. 「LibreOJ Round #6」花煎
    非常巧妙的转化。考虑仅计算半边的序列,那么这样的话\(len\)削了一半,要达成的色彩值也开平方了。问题就转化为,将\(l\)拆分为序列\(a\),使得\(\sum_{i=1}^{n}(a_i+1)=l\),且使得\(\prod_{i=1}^{n}a_i\geqk\)的最小\(l\)。经过一些计算,可以发现2的段不超过一个,3的段不......
  • 树链剖分【loj模板】(〃>目<)
    小声吐槽:如果不是拍了200000组没问题后瞪眼瞪出来了,我才不写呢Decribe:给定一棵\(n\)个节点的树,初始时该树的根为\(1\)号节点,每个节点有一个给定的权值。下面依次进行\(m\)个操作,操作分为如下五种类型:换根:将一个指定的节点设置为树的新根。修改路径权值:给定两个节点......
  • logger & journalctl,LINUX日志管理
    简介:有时候写一些linux系统脚本,外加定时任务,总是希望能看到日志,所以就有了各种骚操作。一:自己写自己写入指定日志,并进行容量管理。#日志文件LOG_FILE=./log/log-$(date'+%Y-%m-%d').txtpath=./logcheck_logs(){if[!-d$path];thenmkdir$pathfi......
  • LG5290/LOJ3052 春节十二响 题解(启发式合并)
    考虑当这个东西是一条链的时候我们该怎么做,显然\(1\)​会有两个儿子,然后两个儿子分别是一条链。所以我们可以给两个儿子的链上的所有节点分别加到两个堆里,每次取出两个堆的最大值加入到我们选择的答案中,然后把两个堆的最大值全部pop掉。最终的答案就是我们pop完一个堆之后,......
  • LOJ2834 「JOISC 2018 Day 2」修行
    LOJ传送门考虑若已求出钦定\(k\)个升高的排列数量\(f_k\),那么二项式反演就可以求出恰好\(k\)个升高的排列数量\(g_k\),即:\[g_k=\sum\limits_{i=k}^n(-1)^{i-k}\binom{i}{k}f_i\]考虑求\(f_i\)。相当于钦定原序列构成了\(n-k\)个上升段。相当于把\(n\)个......
  • 有源汇有上下界最大流 【loj】
    Describe:\(n\)个点,\(m\)条边,每条边\(e\)有一个流量下界\(\text{lower}(e)\)和流量上界\(\text{upper}(e)\),给定源点\(s\)与汇点\(t\),求源点到汇点的最小流。Solution:首先因为仍然有流量的限制,第一步就是要找可行流。想到上题无源汇做法,尝试转换。上题中可行流实际......
  • 【loj】维护全序集
    平衡树的题能不打平衡树尽量别打,除非你闭着眼都能打对。Describe:维护一个多重集S,初始为空,有以下几种操作:把\(x\)加入\(S\)删除\(S\)中的一个\(x\),保证删除的\(x\)一定存在求\(S\)中第\(k\)小求\(S\)中有多少个元素小于\(x\)求\(S\)中小于\(x\)的最......
  • LOJ #2876. 「JOISC 2014 Day2」水壶 题解
    DescriptionJOI君所居住的IOI市以一年四季都十分炎热著称。IOI市被分成\(H\)行,每行包含\(W\)块区域。每个区域都是建筑物、原野、墙壁之一。IOI市有\(P\)个区域是建筑物,坐标分别为\((A_1,B_1),\)\((A_2,B_2),\)\(\ldots,\)\((A_P,B_P)\)。JOI君只能进入建......