虚树
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 · 331 阅读 · 0 评论 -
Codechef Union on Tree(点分树,虚树)
建虚树。 然后在虚树上求出每个点最多可以往外拓展多少距离(意思就是可以由其他点拓展到这个点之后继续拓展)。 那么按照这个定义我们可以得到: 一个点如果被覆盖,那么一定可以覆盖他的点在虚树上是一个联通块。 因为树上连通块满足点数-边数=1。 那么我们把每个点可以覆盖的点数相加,再枚举每条边,减去边的两个点都能覆盖的点数, 那么考虑一个被覆盖的点,能覆盖他的那个联通块会刚好计算了它一次。 那么这样就...原创 2020-05-06 12:47:36 · 397 阅读 · 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 · 455 阅读 · 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 · 1612 阅读 · 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 · 419 阅读 · 0 评论
分享