摘要: 首先把点权归到边上,设点权较小的一个点是v,也就是(u,v)的边权是log2(dis(u,v)) a[v]+a[v]+a[u] 然后还有一个性质就是这棵树按点权最小点提起来就是一个堆 暴力是n^2的MST,然后考虑优化,按照点权从小到大加入生成树,那么每个点加进去的时候会连到点权比他小的点上 因为l 阅读全文
posted @ 2019-05-11 17:38 lokiii 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 如果枚举d来dp,那么就是设f[u][0/1]为u点不断/断掉和父亲的边,然后优先选取f[v][1]+w(u,v) include include include include using namespace std; const int N=300005; int n,du,v[N],d[N], 阅读全文
posted @ 2019-05-11 10:26 lokiii 阅读(272) 评论(0) 推荐(0) 编辑