随笔分类 -  数据结构--虚树

摘要:"vjudge" 首先显然要建立圆方树 对于每一种点建立虚树,考虑这一种点贡献,对于虚树上已经有的点就直接算 否则对虚树上的一条边 $(u, v)$,$u$ 为父亲,假设上面连通块大小为 $x$,下面为 $y$ 切断 $(u, v)$ 之间的点(不包括 $u$)都会有 $x\times y$ 的贡献 阅读全文
posted @ 2019-01-16 14:51 Cyhlnj 阅读(239) 评论(0) 推荐(0)
摘要:"传送门" 就是求两个点 $a,b$ 使得 $dis_1(a,b)+dis_2(a,b)+dis_3(a,b)$ 最大 step1 对第一棵树边分治 那么变成 $d_1(a)+d_1(b)+dis_2(a,b)+dis_3(a,b)$ 最大 并且 $a,b$ 属于边分开的不同的集合 $S,T$ 边分 阅读全文
posted @ 2019-01-05 17:44 Cyhlnj 阅读(212) 评论(0) 推荐(0)
摘要:题意 给你一棵$n$ 个点的树,每个点有权值 $a_i$​ $a$ 为一个排列 求 $$\frac{1}{n(n−1)}​\sum_{i=1}^{n}\sum_{j=1}^{n}\varphi(a_ia_j)dist_{i,j}$$ $n≤200000$ 答案对 $10^9+7$ 取模 Sol 莫比 阅读全文
posted @ 2018-05-30 22:38 Cyhlnj 阅读(145) 评论(0) 推荐(0)
摘要:题面 "传送门" 虚树 把跟询问有关的点拿出来建树,为了方便树$DP$ 在$LCA$处要合并答案,那么把这些点的$LCA$也拿出来 做法:把点按$dfs$序排列,然后求出相邻两个点的$LCA$,把这些点建一个虚树,维护一个栈就好了 Sol 虚树+树$DP$ cpp include define IL 阅读全文
posted @ 2018-05-30 22:30 Cyhlnj 阅读(152) 评论(0) 推荐(0)