虚树
Cyhlnj
这个作者很懒,什么都没留下…
展开
-
虚树(Bzoj3611: [Heoi2014]大工程)
题面传送门虚树把跟询问有关的点拿出来建树,为了方便树DPDPDP 在LCALCALCA处要合并答案,那么把这些点的LCALCALCA也拿出来做法:把点按dfsdfsdfs序排列,然后求出相邻两个点的LCALCALCA,把这些点建一个虚树,维护一个栈就好了Sol虚树+树DPDPDP# include <bits/stdc++.h># define IL...原创 2018-05-30 22:30:41 · 134 阅读 · 0 评论 -
CF809E Surprise me!
题意给你一棵nnn 个点的树,每个点有权值 aiaia_i aaa 为一个排列 求 1n(n−1)∑i=1n∑j=1nφ(aiaj)disti,j1n(n−1)∑i=1n∑j=1nφ(aiaj)disti,j\frac{1}{n(n−1)}\sum_{i=1}^{n}\sum_{j=1}^{n}\varphi(a_ia_j)dist_{i,j} n≤200000n≤200000n...原创 2018-05-30 22:37:59 · 249 阅读 · 0 评论 -
UOJ#347. 【WC2018】通道(边分治)
传送门就是求两个点 a,ba,ba,b 使得 dis1(a,b)+dis2(a,b)+dis3(a,b)dis_1(a,b)+dis_2(a,b)+dis_3(a,b)dis1(a,b)+dis2(a,b)+dis3(a,b) 最大step1对第一棵树边分治那么变成 d1(a)+d1(b)+dis2(a,b)+dis3(a,b)d_1(a)+d_1(b)+dis_2(a,b)+dis...原创 2019-01-05 17:44:48 · 323 阅读 · 1 评论 -
CodeChef SADPAIRS:Chef and Sad Pairs
vjudge首先显然要建立圆方树对于每一种点建立虚树,考虑这一种点贡献,对于虚树上已经有的点就直接算否则对虚树上的一条边 (u,v)(u, v)(u,v),uuu 为父亲,假设上面连通块大小为 xxx,下面为 yyy切断 (u,v)(u, v)(u,v) 之间的点(不包括 uuu)都会有 x×yx\times yx×y 的贡献,差分一下贡献即可# include <bits/std...原创 2019-01-16 14:51:38 · 543 阅读 · 0 评论