题目
传送门
1、将节点a到节点b路径上所有点都染成颜色c;
2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),
如“112221”由3段组成:“11”、“222”和“1”。
请你写一个程序依次完成这m个操作。
题解
这道题很好;
可以看出框架就是树链剖分,就是线段树比较复杂: 使用cl表示区间左端点的颜色,cr表示右端点的颜色,num表示区间内颜色区段的个数,tag表示是否是整个区间都进行了标记;
然后就是维护线段树,左右端点判重;比较难写
代码
没有代码
总结
区间的端点值也可以放到线段树中维护