裸奔 的傻瓜
在通往Ac的路上 蹒跚踱步

题目来源: http://acm.pku.edu.cn/JudgeOnline/problem?id=2777

参考程序:http://www.cnblogs.com/saintqdd/archive/2007/11/04/948622.html

 

第一次学习线段树算法。

题目给出改变颜色和查询操作,对于这个用线段树做比较好。由于颜色比较少,可以用二进制来表示颜色。即每中颜色所占用的数位不一样。这样就很容易的求得每种颜色中不同颜色了。例如1101就是3种颜色。而对2种不同的颜色求或运算,就可以得到他们的颜色之和。1101|1010—>1111就4个颜色了。

线段树就是每个节点表示一段范围,父节点的范围比子节点表示的范围大。对于二叉线段树,可以将父节点的范围2分给子节点。 父节点的颜色就是子节点颜色的或运算。

下面代码,看完也觉得比较易懂的。

 

Code
posted on 2008-09-19 00:47  Lyt  阅读(927)  评论(0编辑  收藏  举报