虚树
make_it_for_good
这个作者很懒,什么都没留下…
展开
-
bzoj 2286 [Sdoi2011]消耗战 虚树
倍增,然后直接上虚树。#include <bits/stdc++.h> using namespace std; #define N 260000 #define ll long long #define inf 1e9 int n,Q,m,cnt,top,tot; int head[N],nex[N<<1],to[N<<1],val[N<<1]; int pos[N],a[N],st[N],dee原创 2016-12-10 20:08:48 · 268 阅读 · 0 评论 -
bzoj 3572 [Hnoi2014]世界树 虚树 dp
先建出虚树(似乎虚树可以不写重新标号) dfs两次维护f[x]f[x] 在x的子树中距x最近的选中的点,g[x]g[x] 整棵树中距x最近的选中的点。 考虑虚树中的每一条边,这条边上的所有不在虚树上的点以及他的子树只能选这条边两端的虚树上的点的g[x]g[x]。 求出分界位置。对于求一条链上点的子树的大小之和,可以倍增维护一个点到祖先的size之和,假设求链fa[x]到fa[y]上点的子树原创 2016-12-19 18:41:19 · 241 阅读 · 0 评论 -
bzoj 3611 [Heoi2014]大工程 虚树 dp
直接上虚树dp一下就好了。。。#include <bits/stdc++.h> using namespace std; #define N 1100000 #define ll long long int n,Q,cnt,top,tot,m,tim; int head[N],nex[N<<1],to[N<<1],st[N]; int a[N],pos[N],fa[N][21],deep[N],bj原创 2016-12-20 09:37:46 · 317 阅读 · 0 评论