- 考虑维护儿子的和,链加和链求和,每个点的贡献在父亲处算一遍,这样除
以外的点的贡献都可以统计到,处理
的贡献是个单点加,父亲的儿子贡献单点加,父亲权值单点加和父亲的父亲的儿子贡献单点加,询问同样让一个点的贡献在父亲统计,然后求出在
处的贡献即可,树剖
- 首先推结论,先把血量排序,在最坏的情况下,要打掉第
个,贡献是
,这一步过后,排名
的血量都会减少
,就此,我们可以设计出
,
表示到
打掉
个的贡献,
,这个显然可以斜率优化,但化简出来形式比较丑并且决策不单调,所以实现需要在凸包上二分,
- 据说之前做过,,,所以我还是没有做起
直接(先不考虑
的限制),
,只需要满足
,用树状数组维护,考虑
的限制,即能不能以当前
作为结尾,即有