本文共 1953 字,大约阅读时间需要 6 分钟。
Count the Colors
问题描述
在一条直线上画一些彩色的线段,一些以前画过的线段可能被后面的线段覆盖。
你的任务是计算你最终能看到的不同颜色的片段。
输入
每个数据集的第一行恰好包含一个整数n, 1 <= n <= 8000,等于彩色段的数量。
下面的n行每一行由3个非负整数组成,用空格隔开:
(x1, x2) c
x1和x2表示线段的左端点和右端点,c表示线段的颜色。
所有的数字都在[0,8000]范围内,它们都是整数。
输入可以包含多个数据集,处理到文件末尾。
输出
输出的每一行都应该包含一个可以从顶部看到的颜色索引,在此颜色的段数之后,应该根据颜色索引打印它们。
如果有些颜色看不到,就不应该打印出来。
在每个数据集之后打印空行。
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
分析:
线段树入门题,但是最近学了分块想拿分块写。
这题题目的n不是区间长度,区间长度是固定的8000
类似线段树laz标记。分块一样开个数组标记。
记得最后重置标记!!!(pushdown) 记录下来提醒自己
我的代码(分块):
#include #include #include #include #include #include #include #include #include #include
转载地址:http://rxuv.baihongyu.com/