虚树
Freopen
这个作者很懒,什么都没留下…
展开
-
「AHOI / HNOI2018」毒瘤
题目虚树DP。#include<bits/stdc++.h>#define maxn 100050#define mod 998244353#define pb push_back#define rep(i,j,k) for(int i=(j),LIM=(k);i<=LIM;i++)#define per(i,j,k) for(int i=(j),LIM=(k);i>=LIM;i--)using namespace std;int n,m,sx[maxn],ty[原创 2020-06-08 20:12:36 · 280 阅读 · 0 评论 -
Codechef Union on Tree(点分树,虚树)
建虚树。然后在虚树上求出每个点最多可以往外拓展多少距离(意思就是可以由其他点拓展到这个点之后继续拓展)。那么按照这个定义我们可以得到:一个点如果被覆盖,那么一定可以覆盖他的点在虚树上是一个联通块。因为树上连通块满足点数-边数=1。那么我们把每个点可以覆盖的点数相加,再枚举每条边,减去边的两个点都能覆盖的点数,那么考虑一个被覆盖的点,能覆盖他的那个联通块会刚好计算了它一次。那么这样就...原创 2020-05-06 12:47:36 · 348 阅读 · 0 评论 -
「WC2018」通道(边分治套虚树)
题目先考虑两棵树怎么做。我们在第二棵树的每一个点uuu上再挂一个点u′u'u′,他们的距离为第一棵树上的depudep_udepu。那么在第二棵树上的两点u′,v′u',v'u′,v′的距离就是两棵树上距离总和-u,vu,vu,v在第一棵树上的lcalcalca的深度×2\times 2×2考虑枚举这个lcalcalca,那么答案就应该是lcalcalca的两个不同子树S1,S2S1,S...原创 2020-01-16 20:24:12 · 406 阅读 · 0 评论 -
[SDOI2017]天才黑客(虚树优化建边)
题目rep实在是太优越了。以边为点,菊花难受。菊花周围边在字典树上建两颗虚树,一颗入虚树,一颗出虚树,入虚树的一个点向其的兄弟在出虚树的对应点上连边,此时用前缀和连边即可。点边数O(n)O(n)O(n),时间复杂度O(nlogn)O(n\log n)O(nlogn)。但是好像点的常数有点大,直逼5e55e55e5…AC Code\mathrm{AC\ Code}AC&n...原创 2020-01-15 19:51:45 · 1567 阅读 · 0 评论 -
LOJ #2206. 「HNOI2014」世界树(虚数,长链剖分O(1)求k级祖先)
题目虚树显然,一次从下到上dpdpdp求子树内能到该点的最优的临时议事处。一次从上到下dpdpdp求子树外能到点uuu的父亲的最优的临时议事处。然后两个加一下除个二,树上找kkk级祖先即可。长链剖分O(1)O(1)O(1)求kkk级祖先:先O(nlogn)O(n\log n )O(nlogn)预处理所有点的2j2^j2j级祖先。再对于每个长链链头,处理链头向上长链长度级的父亲数组...原创 2020-01-04 08:21:00 · 327 阅读 · 0 评论