
虚树
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【SDOI2018】战略游戏(圆方树)(虚树)(树上差分)
传送门题解:圆方树的性质不再赘述,两个圆点路径上的圆点就是原图中两点之间的必经点。那么我们要统计的就是询问的点构成的虚树上有多少个圆点。并不需要把虚树建出来,直接利用dfs序树上差分即可。跑得还挺快的。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs const...原创 2019-11-15 11:50:01 · 177 阅读 · 0 评论 -
【LOJ6184】无心行挽(虚树)(树形DP)(树链剖分)(ST表)
传送门题解:虚树好题,后续的处理其实也可以用倍增,不过树剖常数那么小直接上树剖+ST表完全没有压力。首先看到题目这个形式大概就是要用虚树的了。求的是距离所有关键点的最小值的最大值。答案点有三种情况,在虚树节点上,在虚树缩掉的边的子树中,在虚树上的点的无关键点子树中。第一种树形DP,第二种树剖+DFS序+ST表,第三种BFS序+ST表。非常好写代码:#include<bi...原创 2019-11-04 21:34:49 · 1470 阅读 · 0 评论 -
【SDOI2019】世界地图(虚树)(最小生成树)
传送门SD队长说这道题是送分的。。。于是SD省选现场就只有他A了这道题题解:有很多题解用了Kruskal重构树,在下表示不解。其实这道题还是难在实现上面,先来说一下思路。由于给出的禁用区间不会越过背面(即m→1m\rightarrow 1m→1的边),所以可以考虑先处理出前后缀的最小生成树,再考虑加上翻过背面的边进行拼接。其实也就是说给两棵最小生成树和这两棵树之间的一些边,求新的最...原创 2019-10-25 10:12:01 · 307 阅读 · 0 评论 -
2019.03.01【HNOI2018/AHOI2018】【BZOJ5287】【洛谷P4426】毒瘤(容斥原理)(虚树)(树形DP)
BZOJ传送门洛谷传送门解析:这道题题意很清楚,就是求一个稀疏图的独立集数量(稀疏到极点的那种)。暴力做法也很显然,树的情况直接上树形DPDPDP,有非树边的情况直接枚举非树边两侧端点或特殊点的情况跑树形DP。然后加上容斥原理优化就有75pts75pts75pts了。对于其他题解,我只想说:你们都知道暴力有容斥做法了为什么建完虚树用了个那么诡异的方法?建完虚树继续容斥啊。发现转移其...原创 2019-03-01 20:00:05 · 214 阅读 · 0 评论 -
2019.04.02【SDOI2011】【洛谷P2495】【BZOJ2286】消耗战(虚树)
洛谷传送门BZOJ传送门补档计划无题解。代码:#include<bits/stdc++.h>#define ll long long#define re register#define gc get_char#define cs constnamespace IO{ inline char get_char(){ static cs int Rlen=1&...原创 2019-04-02 14:04:50 · 190 阅读 · 0 评论 -
【CF809E】Surprise me!(莫比乌斯反演)(虚树)(树形DP)
传送门题解:前面那个关于nnn的式子丢掉不管。首先我们可以魔改树的标号使得我们需要求的式子变成下面这个:Ans=∑i=1n∑j=1nϕ(ij)dist(i,j)Ans=\sum_{i=1}^n\sum_{j=1}^n\phi(ij)dist(i,j)Ans=i=1∑nj=1∑nϕ(ij)dist(i,j)对于欧拉函数,有:ϕ(ij)=ϕ(i)ϕ(j)gcd(i,j)ϕ(gcd(i,...原创 2019-07-26 21:06:00 · 212 阅读 · 0 评论