【题解】[NOIP2016 提高组] 天天爱跑步

P1600 [NOIP2016 提高组] 天天爱跑步

考虑 a 到 b ,c = lca(a, b) ,那么如果对观察员 u 产生贡献:
如果 u 在 a->c 上,则 \(time[a]+dep[a]-dep[u] = w[u]\) ,即 \(time[a]+dep[a] = w[u]+dep[u]\) ,其中 \(time[a]=0\)
如果 u 在 c->b 上,则同理得 \(time[b]-dep[b] = w[u]-dep[u]\) ,其中 \(time[b] = dep[a]-dep[c]+dep[b]-dep[c]\)
分别计算两种情况的贡献,用差分和线段树合并,就做完了

智商不够,数据结构来凑.jpg

上一篇:[NOIP2016]组合数问题——排列组合问题


下一篇:【洛谷】P1563 [NOIP2016 提高组] 玩具谜题