摘要: "题目" 略一观察发现我们要求的东西是虚树上的边权和乘上$2$ 但是增加和删除操作使得我们不能每次都建出一棵显式虚树来 考虑虚树的构建过程,发现这个边权和就是按照$dfs$序依次走过每一个点,最后再从最后一个点走回来,这样每一条边只会被经过两次 于是我们用$set$来维护$dfs$序就好了 代码 c 阅读全文
posted @ 2019-03-21 15:02 asuldb 阅读(177) 评论(0) 推荐(0) 编辑
摘要: "题目" 还纠结了一下是费用流还是最小割 最终还是决定让最小割去死吧 我们的问题就是让一个点的点权只被计算一次 考虑拆点 1. 将所有点拆成入点和出点,入点向出点连流量为$1$的边 1. 每一个出点往下连能到达的点,向入点连费用为该点点权容量为$0$的边,向出点连费用为$0$容量为$k 1$的边 这 阅读全文
posted @ 2019-03-21 11:14 asuldb 阅读(94) 评论(0) 推荐(0) 编辑
摘要: "题目" 发现$n$比较大,但是$k,p$都很小,考虑矩乘使得复杂度倾斜一下 发现所有车的最大间隔都是$p$,还保证$k include include include define re register const int M=1024; const int mod=30031; struct 阅读全文
posted @ 2019-03-21 10:21 asuldb 阅读(155) 评论(0) 推荐(0) 编辑