摘要: 【题解】 很容易想到暴力做法,枚举每个点,然后对于每个点O(N)遍历整棵树计算答案。这样整个效率是O(N^2)的,显然不行。 我们考虑如果已知当前某个点的答案,如何快速计算它的儿子的答案。 显然选择它的儿子作为集合点,它的儿子的子树内的奶牛可以少走当前点到儿子节点的距离dis,不在它儿子的子树内的奶 阅读全文
posted @ 2018-04-12 09:40 Driver_Lao 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 【题解】 一头牛走到i,相当于把i点的子树的点权都加1,查询减慢的次数就是查询目的地的点权。 预处理dfs序,某个点的子树的dfs序是连续的一段。差分后用树状数组维护,变成点修区查。或者直接线段树区修点查。 1 #include<cstdio> 2 #include<algorithm> 3 #de 阅读全文
posted @ 2018-04-12 08:26 Driver_Lao 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 【题解】 很容易可以写出朴素DP方程f[i]=sigma f[j] (sum[i]>=sum[j],1<=j<=i). 于是我们用权值树状数组优化即可。 1 #include<cstdio> 2 #include<algorithm> 3 #define N 200010 4 #define rg 阅读全文
posted @ 2018-04-12 07:38 Driver_Lao 阅读(140) 评论(0) 推荐(0) 编辑