虚树
Mys_C_K
人生有许多道:曾经踏足的是道,即将踏往的也是道,那什么才是道呢?唯有脚下走的才是道。一切精神或者物质都归于虚无,然后从混沌中衍生出三万道。在悲喜间涉足一条无数前人经历过,且将有无数后人奔赴的道,无论是否已经或者将要到达彼岸,然后便不再回头或是左顾右盼,即使有些道繁盛至极,夜灯如昼,无数人一浪又一浪的涌去,造就了世人皆知的辉煌;即使有些道草木凋敝,荒草丛生,只等勇敢的开拓者斩开荆棘,创造一片天地;这些都无所关,无所在意,彼岸何如、来日何方甚至过往旧事都化作一缕云烟,飘渺碧霄,我自撷高山之月色,独随足落处往行。
展开
-
[SDOI2011] bzoj 2286 消耗战 - 虚树dp - 虚树学习笔记
网上写的都看不懂,自我感觉就是:把关键点排序,然后一开始根节是一条链,然后依次加入每一个点,每次用当前的路径,把求出新加入的点到根的路径,减去,也就是只保留那些从根到当前这个点的路径的点,可以想象是用新加入的路径切掉之前路径,这个题建完虚树随便做。 #include<iostream> #include<cstring> #include<cstdio> ...原创 2018-04-12 11:16:49 · 210 阅读 · 0 评论 -
statement - 基环树 - 虚树 - 倍增
这个题写的真爽翻了。 题目大意就是给你一个树和基环树森林(内向),边有权,每次询问给你两个点集,问所有黑点到白点的路径中,边权最大值最小是多少。 题解:首先考虑树,直接建出虚树来跑一遍dfs即可。然后每个环会选出一些点来,那些点先计算出一个贡献,你只要把环倍长然后那些点排个序,在上面做倍增即可。 #include<iostream> #include<cstring> #i...原创 2018-09-27 09:24:46 · 251 阅读 · 0 评论 -
svisor - 动态点分治 - 虚树
题目大意: 给你一颗树,多次询问,每次询问给定k个关键点以及每个点的半径,问这k个点能够覆盖到的点的并集的大小。 题解: 考虑k=1怎么做:直接动态点分治即可。 考虑建出虚树,重新更新每个点的半径使得不存在两个点,其中一个延申到另一个时,半径仍然大于另一个。 考虑我们已经处理虚树上x的前若干棵子树的点,能够覆盖到的点的并集,现在新增一颗子树y并进去,那么要减去新增后重复计算的点,方法是虚树上(x,...原创 2018-12-22 13:57:35 · 429 阅读 · 0 评论 -
函树(hs) - 莫比乌斯反演 - 虚树
题目大意:给一颗树,求∑x,yφ(x×y)dist(x,y)\sum_{x,y}\varphi(x\times y)\text{dist}(x,y)∑x,yφ(x×y)dist(x,y)。n≤105n\le10^5n≤105 题解: ∑x,yφ(x×y)dist(x,y)=∑x,yφ(x)φ(y)gcd(x,y)φ(gcd(x,y))dist(x,y)=∑d=1ndφ(d)∑d∣x,d∣yφ...原创 2019-05-02 19:37:56 · 616 阅读 · 0 评论 -
SDOI2019 R2D1T3 世界地图 - 最小生成树 - kruskal重构树 - 虚树
这题在场上只有我一个人过感觉非常蒙蔽这题不是送分吗(逃) 听Claris说原本这个题打算是桥计数然后要类似虚仙人掌(瑟瑟发抖) 总之考虑每次都是合并一个前缀和后缀,考虑类似于LCT维护MST的做法,每次加入一条边,形成环了的话就把环上最大边删掉。然后注意你每次只会加形如(m,i)−(1,i)(m,i)-(1,i)(m,i)−(1,i)(方便起见列在前)的边,因此以前缀为例,只有那些是第一列点某两点...原创 2019-05-09 10:46:35 · 940 阅读 · 0 评论