poj 2528 Mayor's posters 线段树+离散化
离散化处理要注意+1(看了HH大牛的博客懂的,以前自己的代码是不对的)
例如数据:
1
3
1 10
1 3
6 10
这样,普通离散化处理 {1 3 6 10}, 然后此程序会操作成点染色,于是结果为2, 但正确答案为 3;
HH大牛给出一种离散化方法:
如果相邻数字间距大于1的话,在其中加上任意一个数字,比如加成[1,2,3,6,7,10],然后再做线段树就好了 (详见下面代码)按照上述方法离散化处理,为 {1 3 4 6 7 10 11 }, 染色, 结果为 3;这样,就很简洁地将一个数字表示成一段区域。