PPT1 例3
来源:互联网 发布:淘宝永久封店重新开店 编辑:程序博客网 时间:2024/05/09 03:47
题意/Description:
把例2稍加改动,规定:线段的颜色可以相同。连续的相同颜色被视作一段。问x轴被分成多少段。
读入/Input:
(不详)
4 20 //四条,总长度为20
10 19 1
2 9 2
5 13 3
15 17 4
x轴被分成多少段。
题解/solution:
这题和例2有很多相似的地方,改改就过了。
主要算法不变:
定义cover如下:cover=-1表示该区间由多种颜色组成。cover>=0表示该区间只有一种单一的颜色cover。
统计算法改改:
如何判断是两段颜色相同:lt表示最左边的颜色,rt表示最右边的颜色。只要lt=rt相等就一样,可是两边没有颜色也会统计,所以条件为lt=rt<>0。最后统计的减一。
代码/Code:
type arr=record cover:longint; end;var tree:array[0..2001] of arr; n,m,ans,tk,kt:longint; f:array[0..2001] of longint;procedure ins(p,l,r,a,b,c:longint);var m:longint;begin with tree[p] do begin if cover<>c then begin m:=(l+r) div 2; if (a=l) and (b=r) then cover:=c else begin if cover>=0 then begin tree[p*2].cover:=cover; tree[p*2+1].cover:=cover; cover:=-1; end; if b<=m then ins(p*2,l,m,a,b,c) else if a>=m then ins(p*2+1,m,r,a,b,c) else begin ins(p*2,l,m,a,m,c); ins(p*2+1,m,r,m,b,c); end; end; end; end;end;function count(p,l,r:longint;var lt,rt:longint):longint;var tl,tr,m:longint;begin m:=(l+r) div 2; with tree[p] do begin if cover>=0 then begin lt:=cover; rt:=cover; exit(1); end else if r-l>1 then begin ans:=count(p*2,l,m,lt,tl)+count(p*2+1,m,r,tr,rt); if (tl=tr) and (tl>=0) then ans:=ans-1; count:=ans; end; end;end;procedure main;var a,b,z,i:longint;begin readln(n,m); for i:=1 to n do begin readln(a,b,z); ins(1,1,m,a,b,z); end;end;begin main; write(count(1,1,m,tk,kt));end.
3 0
- PPT1 例3
- PPT1 例1
- PPT1 例2
- PPT1 例4
- PPT1 例5
- PPT1
- (转载)机器学习方法的PPT1
- C++课上ppt1 认识c++
- 3*3卷积核实例
- 单例模式3
- 单例模式3
- 精彩百例3
- ssl例3
- 3,单例模式
- 例3-1……例3-11 初探OpenCV
- 例3-12......例3-15 初探OpenCV
- 例3-16......例3-19 CvFileStorage结构的使用
- 进制转换3例
- 如何查看某种sensorType正在被哪些 APP使用
- 使用sizeof()计算类的大小
- ActiveMQ 自学(三) 集群部署
- Android仿网易云音乐中锁屏后在开锁界面插屏功能
- JQuery常见特效实现方法
- PPT1 例3
- 设备树使用手册
- Notification的使用
- iOS提示有新版本以及版本升级的问题
- ubuntu16.04系统各种颜色调节
- VisualVM 提示 tomcat 不受此jvm支持解决办法
- 自定义高效支持点击监听的RecyclerView
- CentOS 下Mysql数据库的安装与配置
- java.lang.IllegalStateException: Could not find a method false(View) in the activity class com.xuan