可以类比序列上的数颜色,在同一棵子树内把每种颜色的贡献放在最浅的深度上。
考虑怎么维护。
首先维护一棵权值线段树,代表每个深度所具有的颜色数(如上所述,贡献在最浅深度上)。
但是合并的时候如何更新呢?
考虑再来一棵权值线段树,维护每个颜色的最浅深度,然后在合并的时候更新另一棵。
然后强制在线就可持久化第一棵权值线段树。
然鹅,500 组数据把我的常数卡成狗……
几乎跑了一分钟的样子……
此代码无法在 BZOJ 上通过。
代码:
1 |
|
可以类比序列上的数颜色,在同一棵子树内把每种颜色的贡献放在最浅的深度上。
考虑怎么维护。
首先维护一棵权值线段树,代表每个深度所具有的颜色数(如上所述,贡献在最浅深度上)。
但是合并的时候如何更新呢?
考虑再来一棵权值线段树,维护每个颜色的最浅深度,然后在合并的时候更新另一棵。
然后强制在线就可持久化第一棵权值线段树。
然鹅,500 组数据把我的常数卡成狗……
几乎跑了一分钟的样子……
此代码无法在 BZOJ 上通过。
代码:
1 | #include <cstdio> |