#P14625. [IATI2021 day2]Delivery

    ID: 13841 传统题 2000ms 512MiB 尝试: 8 已通过: 1 难度: 6 上传者: 标签>CF2000动态规划线段树排序数学数据结构二分

[IATI2021 day2]Delivery

题目描述

Mathew 开了一家快递公司。他居住的城市中有恰好 10^9 个房子,沿一条直线依次排列。

  • 编号为 i 的房子与 i-1i+1 号房子相邻(如果这些房子存在)。

公司接到了 N 个快递请求,第 i 个请求要求在恰好 T_i 时刻把货送到 H_i 号房子。

已知不存在两个请求同时发生在同一栋房子,也就是说对于 i != j,至少满足以下之一:

  • T_i != T_j
  • H_i != H_j

Mathew 想知道:为了完成所有快递请求,最少需要购买多少辆货车。

每辆货车满足:

  • 每经过 1 个单位时间,可以向左移动 1 栋房子,或向右移动 1 栋房子;
  • 也可以原地不动;
  • 初始时刻可以停在任意房子前;
  • 送货本身耗时忽略不计。

请你编写程序 delivery.cpp,求出完成所有请求所需的最少货车数量。


输入格式

第一行一个整数 N,表示请求数量。

接下来 N 行,每行两个整数 T_i, H_i,表示必须在时刻 T_i 向房子 H_i 送货。


输出格式

输出一行一个整数,表示所需的最少货车数量。


数据范围

  • 1 <= N <= 10^6
  • 1 <= T_i, H_i <= 10^9
  • 对于 i != j,有 T_i != T_jH_i != H_j

子任务

子任务 分值 N
1 25 <= 10^3
2 10 <= 10^4
3 40 <= 2 * 10^5
4 20 <= 10^6

样例 #1

输入 #1

6
1 1
2 3
3 2
5 4
4 1
4 3

输出 #1

2

说明

最少需要 2 辆货车。

一种可行方案如下:

  • 第一辆货车:(1,1)* -> (2,1) -> (3,1) -> (4,1)* -> (5,1)
  • 第二辆货车:(1,2) -> (2,3)* -> (3,2)* -> (4,3)* -> (5,4)*

其中 (t,h) 表示货车在时刻 t 位于房子 h;带 * 的时刻表示该车在该时刻完成了一次送货。