早些日子为了学习线段树,在Du神牛的带领下,做了此题,入门好题也! poj2777 Count Color
此题是本人线段树第二题,前一道是TYVJ1039 忠诚2(一道动态RMQ问题)
输入区间长度L (1 <= L <= 100000),颜色数目 T (1 <= T <= 30) 和 指令数O (1 <= O <= 100000)
接下来O行C x y z 代表将[x,y]区间染成z色,P x y z 代表询问[x,y]有多少种颜色,起始各处颜色为1;
我第一眼看到”1 <= T <= 30″就格外激动为啥不是40呢?显然是为了小于32,所以显然可以用二进制每位表达一种颜色,颜色1是1(0x1)颜色10就是1024(0x400),在线段树里查询便可以获得这一段的几种颜色然后做一次OR操作便可得到所有颜色
我看到T的范围就马上想到到了Matrix67牛的一个位运算优化:位运算简介及实用技巧(二):进阶篇(1) 中计算二进制中的1的个数的方法
Continue reading “POJ 2777 Count Color 线段树染色”