题目名称 3075. 线段计数
输入输出 segment_count.in/out
难度等级 ★★☆
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatarsyzhaoss 于2019-01-29加入
开放分组 全部用户
提交状态
分类标签
树状数组 离散化
分享题解
通过:1, 提交:3, 通过率:33.33%
Gravatar梦那边的美好ET 100 1.149 s 12.31 MiB C++
Gravatar咸鱼四号 40 6.515 s 9.36 MiB C++
Gravatar梦那边的美好ET 0 50.000 s 11.55 MiB C++
关于 线段计数 的近10条评论(全部评论)

3075. 线段计数

★★☆   输入文件:segment_count.in   输出文件:segment_count.out   简单对比
时间限制:1 s   内存限制:128 MiB

【题目描述】


小 Z 是一个聪明的孩子,因此经常能收到礼物。

有一天,小 Z 从小 P 那里得到了长度为1,2,3…的线段作为礼物,聪明的小 Z想将这些线段摆放在数轴上。第i次插入操作,将长度为i的线段放在数轴上,每一次插入操作后,他都会统计刚刚插入的线段完全覆盖了之前多少条线段。聪明的小 Z 觉得只插入线段太简单了,于是他又添加了删除的操作,对于删除操作,他都会从数轴上删掉第k次插入的线段(线段是相互独立的),现在请你来帮助小Z 解决这个问题。


【输入格式】

每个测试点包含多组测试数据。

输入的第一行为一个正整数T,表示测试数据的组数。

每组测试数据包含n + 1行。

第一行包含一个正整数n,代表操作的次数,接下来n行每行包含一个操作,每个操作用两个整数x和y表示。

如果x是 0,表示插入操作,小 P 在y位置插入一条线段(对于第i次插入的线段,线段将被插入到[y,y+i],长度为i)。

如果x是 1,表示删除操作,小 P 会删除第y次插入操作插入的线段。

【输出格式】

对于每组测试数据,首先输出一行"Case #i:"(不包含引号),表示第 i 组测试数据的输出。

接着对于每次的插入操作,按题目要求输出答案。

【样例输入】

2

5

0 1

0 3

0 5

1 3

0 2

5

0 1

0 1

1 1

0 2

0 1

【样例输出】

Case #1:

0

0

0

1

Case #2:

0

1

0

2

【输入输出说明】

对于第一组数据:

第一次插入[1,2]线段,没有完全覆盖任何线段,输出 0;

第二次插入[3,5]线段,没有完全覆盖任何线段,输出 0;

第三次插入[5,8]线段,没有完全覆盖任何线段,输出 0;

删除第三次插入的线段;

第四次插入[2,6]线段,完全覆盖第二次插入的线段,输出 1。

【数据规模约定】

对于 10%的测试数据,满足1 ≤ n ≤ 100。

对于 30%的测试数据,满足1 ≤ n ≤ 2000。

对于 70%的测试数据,满足1 ≤ n ≤ 50000。

对于 100%的测试数据,满足1 ≤ T ≤ 5,1 ≤ n ≤ 200000;

对于插入操作满足 |y| < 10^9;

对于删除操作,保证y合法,每个线段最多会被删除 1 次。