Description

画一些颜色段在一行上,一些较早的颜色就会被后来的颜色覆盖了。

你的任务就是要数出你随后能看到的不同颜色的段的数目。

Input

每组测试数据第一行只有一个整数n, 1 <= n <= 8000,等于填色的次数

接下来的n行每行有三个非负整数,他们之间用一个空格分开。

x1 x2 c

x1和x2表示填色段最左边的点和最右边的点, c表示填进的颜色。

所有数字都是在[0..8000]这个范围里的整数。

输入有多组测试数据,最后以文件结束符为结束。

Output

输出的每一行都是最后能看到的颜色的数字,还有这种颜色的段数。

如果这种颜色最后不能见到,就不要打印出来。

每组数据后面跟一个空行。

Sample Input

5

0 4 4

0 3 1

3 4 2

0 2 2

0 2 3

4

0 1 1

3 4 1

1 3 2

1 3 1

6

0 1 0

1 2 1

2 3 1

1 2 0

2 3 0

1 2 1

Sample Output

1 1

2 1

3 1

1 1

0 2

1 1


线段树维护当前节点的颜色,如果颜色相同则为一个颜色,颜色不同为-1,无颜色为-2,最后统计的时候先序遍历递归即可

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=8e3;
int tree[N*5+100],kind[N*5+100];
int cnt;
int read(){
int x=0,f=1;char ch=getchar();
for (;ch<'0'||ch>'9';ch=getchar()) if (ch=='-') f=-1;
for (;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';
return x*f;
}
void updata(int p){//标记下传更新
if (tree[p]>=0){
tree[p*2]=tree[p];
tree[p*2+1]=tree[p];
}
tree[p]=-2;
}
void change(int p,int l,int r,int x,int y,int t){
if (tree[p]==t) return;//剪枝
if (x<=l&&r<=y){
tree[p]=t;
return;
}
updata(p);
int mid=(l+r)>>1;
if (x<mid) change(p*2,l,mid,x,y,t);
if (y>mid) change(p*2+1,mid,r,x,y,t);
}
void get(int p){//统计答案
if (tree[p]>=0){
if (tree[p]!=cnt){
kind[tree[p]]++;
cnt=tree[p];
}
return;
}
if (tree[p]==-1){cnt=-1;return;}
get(p*2);get(p*2+1);
}
int main(){
int n;
while (~scanf("%d",&n)){
memset(tree,255,sizeof(tree));
memset(kind,0,sizeof(kind));
for (int i=1;i<=n;i++){
int x=read(),y=read(),t=read();
change(1,0,N,x,y,t);
}
cnt=-1;
get(1);
for (int i=0;i<=N;i++) if (kind[i]) printf("%d %d\n",i,kind[i]);
printf("\n");
}
return 0;
}

[ZOJ1610]Count the Colors的更多相关文章

  1. ZOJ1610 Count the Colors —— 线段树 区间染色

    题目链接:https://vjudge.net/problem/ZOJ-1610 Painting some colored segments on a line, some previously p ...

  2. 线段树专题—ZOJ1610 Count the Colors(涂区间,直接tag标记)

    Painting some colored segments on a line, some previously painted segments may be covered by some th ...

  3. kuangbin专题七 ZOJ1610 Count the Colors (灵活线段树)

    Painting some colored segments on a line, some previously painted segments may be covered by some th ...

  4. ZOJ-1610 Count the Colors ( 线段树 )

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1610 Description Painting some co ...

  5. ZOJ-1610 Count the Colors(线段树染色,求染色段)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1610 https://vjudge.net/contest/318019# ...

  6. [ZOJ1610]Count the Colors(线段树,区间染色,单点查询)

    题目链接:http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=1610 题意:给一个长8000的绳子,向上染色.一共有n段被染色,问染 ...

  7. 线段树专题—ZOJ1610 Count the Colors

    题意:给一个n,代表n次操作,接下来每次操作表示把[l.r]区间的线段涂成k的颜色当中,l,r,k的范围都是0到8000 分析:事实上就是拿线段树维护一段区间的颜色,整体用到的是线段树的区间更新把,可 ...

  8. Count the Colors(线段树染色)

    Count the Colors Time Limit:2000MS    Memory Limit:65536KB    64bit IO Format:%lld & %llu Submit ...

  9. zoj 1610 Count the Colors

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=610  Count the Colors Time Limit:2000MS   ...

随机推荐

  1. oracle数据库 SQL语句、内置函数大全

    1.数值函数 函数 返回值 样例 显示 CEIL(n)      大于或等于数值n的最小整数 SELECT CEIL(10.6) FROM TABLE_NAME; 11 FLOOR(n)  小于等于数 ...

  2. 偏差-方差分解Bias-Variance Decomposition

    转自: http://www.cnblogs.com/jmp0xf/archive/2013/05/14/Bias-Variance_Decomposition.html

  3. 【APUE】孤儿进程与僵死进程

    基本概念: 在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程.子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束. 当一个 进程 ...

  4. java File_encoding属性

    今天给客户发版本号,突然发现报表导出内容为空,大小0字节.感到很奇怪,由于开发的时候都好好的,打包出来怎么会出现异常. 细看才后发现是 file_encoding这个java系统属性编码方式设置导致的 ...

  5. redux-saga 异步流

    前言 React的作用View层次的前端框架,自然少不了很多中间件(Redux Middleware)做数据处理, 而redux-saga就是其中之一,目前这个中间件在网上的资料还是比较少,估计应用的 ...

  6. Linux的基本优化

    归结成口诀: 一清.一精.一增.两优.四设.七其他 一清: 定时清理日志/var/spool/clientsqueue 一精: 精简开机启动服务 一增: 增大文件描述符 两优: linux内核参数的优 ...

  7. hive计算网页停留时长

    hive表结构例如以下: create table pv_user_info( session_id string, user_id string, url string, starttime big ...

  8. CRF图像切割简单介绍

    这里主要是讲Conditional Random Fields(CRF)用于pixel-wise的图像标记(事实上就是图像切割).CRF经经常使用于 pixel-wise的label 预測.当把像素的 ...

  9. make eval builtin function

    1 eval的返回值是空字符串,因此它可以用于Makefile的任何位置而不引起错误 2 eval函数的作用效果 生成Makefile的动态部分,即eval用于增加Makefile的构成部分. 也就是 ...

  10. Django's CSRF mechanism

    Forbidden (403) CSRF verification failed. Request aborted. You are seeing this message because this ...