POJ2777_Count Color
描述
有一块长度为L厘米的板子,我们可以把板子分成L块,每块一厘米长。
我们现在给板上色,规则是一块只能涂一种颜色,使用不同的整数取描述某种颜色,我们可以做的操作有:
“C A B C” 把区间[A,B]
涂成颜色C。
“P A B” 输出区间[A,B]
之间的不同颜色数。
在最开始时,整个板的颜色是1。
数据范围
板子长度 1 <= L <= 100000
颜色数 1 <= T <= 30
操作数 1 <= O <= 100000
思路
建立存储着区间内部各颜色种类的线段树,由于颜色数小于32,可以使用一个整形变量的每一位来存储这个区间内有没有这种颜色的点。
更新时,做按位或可以合并两个子节点的状态。
解决
1 |
|