#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
const int MAXN=;
struct Node
{
int l,r;
int color;
}tr[MAXN*];
int color[MAXN];
int temp;
void build(int i,int l,int r)
{
tr[i].l=l;
tr[i].r=r;
//-1表示没有颜色
tr[i].color=-;
if(l+==r)
return;
int mid=((l+r)>>);
build(i<<,l,mid);
build((i<<)|,mid,r);
}
void insert(int i,int l,int r,int c)
{
if(l==r)
return;
if(tr[i].color==c)
return;
if(l<=tr[i].l&&r>=tr[i].r)
{
tr[i].color=c;
return;
}
//存在颜色,往下更新
if(tr[i].color>=)
{
tr[i<<].color=tr[i].color;
tr[(i<<)|].color=tr[i].color;
//表示有多种颜色
tr[i].color=-;
}
int mid=((tr[i].l+tr[i].r)>>);
if(r<=mid)
insert(i<<,l,r,c);
else if(l>=mid)
insert((i<<)|,l,r,c);
else
{
insert(i<<,l,mid,c);
insert((i<<)|,mid,r,c);
}
tr[i].color=-;
}
//统计各颜色的段数
void query(int i)
{
if(tr[i].color==-)
{
temp=-;
return;
}
if(tr[i].color!=-)
{
//temp存的是前一段的颜色
if(tr[i].color!=temp)
{
color[tr[i].color]++;
temp=tr[i].color;
}
return;
}
if(tr[i].l+!=tr[i].r)
{
query(i<<);
query((i<<)|);
}
}
int main()
{
int n,a,b,c;
int Max;
while(scanf("%d",&n)!=EOF)
{
build(,,);
Max=;
while(n--)
{
scanf("%d%d%d",&a,&b,&c);
insert(,a,b,c);
if(c>Max)
Max=c;
}
temp=-;
memset(color,,sizeof(color));
query();
for(int i=;i<=Max;i++)
if(color[i])
printf("%d %d\n",i,color[i]);
printf("\n");
}
return ;
}

最新文章

  1. 【转载】Mysql 查看连接数,状态
  2. Visual Studio 后期生成事件复制配置文件
  3. 【BZOJ-3675】序列分割 DP + 斜率优化
  4. windows编程中关于“关闭窗口无法退出进程”的解决方法
  5. C#导出EXCEL的几种方法
  6. div 绝对布局居中
  7. 让BOOTSTRAP默认SLIDER支持触屏设备
  8. node.js操作mongoDB数据库
  9. Spring的两种任务调度Scheduled和Async
  10. 重装助手教你如何在Windows 10中更改您的帐户名称
  11. python中sys模块之输入输出错误流
  12. HDOJ 2005 第几天?
  13. IDEA开发web程序配置Tomcat
  14. powerdesigner 16.5 破解步骤
  15. jq的attr、prop和data区别
  16. python学习14-模块
  17. Python 爬虫 (一)
  18. 算法练习5---快速排序Java版
  19. 在Mac中安装python,配置python环境
  20. matlab 摘要

热门文章

  1. c和c++中读取数据的方式总结
  2. CSS 对于grid布局的理解,举例代码及解释
  3. CCF_201503-2_数字排序
  4. jsp作用域问题
  5. Ansible:roles初始化系统
  6. TCP协议三次握手(通信)
  7. const与vector的搭配
  8. 02-msyql-存储引擎
  9. [redis读书笔记] 第一部分 数据结构与对象 对象类型
  10. EF core (code first) 通过自动迁移实现多租户数据分离 :按Schema分离数据