题目大意:
把例2稍加改动,规定:线段的颜色可以相同。连续的相同颜色被视作一段。问x轴被分成多少段。
题解:
cover=-1表示该区间由多种颜色组成。cover>=0表示该区间只有一种单一的颜色cover。
这一题与例2插入算法没有太大的变化,但统计算法需要注意:
最左颜色=最右颜色=本身非底色则统计数加1,连接处颜色相同并且非底色,则总数减1。
代码:
l 最左边颜色
r 最右边颜色
if r-l>1 then
begin
result:=count(p*2,l,(l+r) div 2,lc,tl)+count(p*2+1,(l+r) div 2,r,tr,rc);
if (tl=tr) and (tl>=0) then result:=result-1;
count:=result;
end;
result:=count(p*2,l,(l+r) div 2,lc,tl)+count(p*2+1,(l+r) div 2,r,tr,rc);
if (tl=tr) and (tl>=0) then result:=result-1;
count:=result;
end;