摘要:
题面传送门 对于一个点,考虑如果把它和它的子树断开来。 断主要边肯定是断和父节点连着的边。 断次要边统计子树内有几条次要边连向外面。 如果只有一条,那么就断这一天,\(ans++\) 如果没有,那么随便断,加上次要边边数即可。 统计子树内边数可以用树上差分 时间复杂度$O(nlogn)$ 代码实现: 阅读全文
摘要:
题面传送门 题目要求$k$个连接关键点的边权之和的二倍。 那么$ans=dist(a_1,a_2)+dist(a_2,a_3)+...+dist(a_,a_k)$ 那么加入或删除一个点时对左右两边拆边建边即可。 维护左右两边可以用平衡树维护,这里写了一个非递归式权值线段树维护。 时间复杂度$O(nl 阅读全文
摘要:
题面传送门 感觉就像一道裸题。 转化成前缀和然后建边即可。 注意前缀和特性:\(q_i>q_{i-1}\&\&q_-q_{i-1}\leq1\) 所以按照这个建边就好了。 代码实现: #include<cstdio> #include<cstring> #include<queue> #define 阅读全文