「BZOJ2243」[SDOI2011] 染色(线段树+树链剖分)

题目

传送门
1、将节点a到节点b路径上所有点都染成颜色c;
2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),
如“112221”由3段组成:“11”、“222”和“1”。
请你写一个程序依次完成这m个操作。

题解

这道题很好;
可以看出框架就是树链剖分,就是线段树比较复杂: 使用cl表示区间左端点的颜色,cr表示右端点的颜色,num表示区间内颜色区段的个数,tag表示是否是整个区间都进行了标记;
然后就是维护线段树,左右端点判重;比较难写

代码

没有代码

总结

区间的端点值也可以放到线段树中维护

猜你喜欢

转载自blog.csdn.net/A_Comme_Amour/article/details/79768803