CF390A Inna and Alarm Clock

题目描述

Inna 非常喜欢睡觉,所以她一共需要 $n$ 个闹钟来叫醒自己。假设 Inna 的房间是一个 $100 \times 100$ 的正方形,左下角坐标为 $(0,0)$,右上角坐标为 $(100,100)$。这些闹钟被放置在正方形内的整数点上。 早晨到了,房间里的 $n$ 个闹钟都开始响了,Inna 想要把它们关闭。为此,Inna 想出了一个有趣的游戏: - 首先,Inna 会选择一种线段类型,她在整个游戏过程中都只使用这一种线段。线段可以是竖直的,也可以是水平的。 - 然后,Inna 进行多次操作。每次操作时,她可以在平面上画任意长度的一条线段(线段的类型在游戏开始时确定)。所有位于该线段上的闹钟都会被关闭。当所有闹钟都被关闭时,游戏结束。 Inna 很困,所以她希望以最小的操作次数关闭所有闹钟。请你帮她计算,在最优情况下,她最少需要画多少次线段?

输入格式

第一行输入一个整数 $n$,表示闹钟的数量,$1\leq n \leq 10^5$。接下来的 $n$ 行,每行两个整数 $x_i, y_i$,表示第 $i$ 个闹钟的坐标,$0 \le x_i, y_i \le 100$。 注意,一个点上可以有多个闹钟,闹钟可以放在房间边界上。

输出格式

输出一行一个整数,表示 Inna 最少需要画的线段数。

说明/提示

在第一个样例中,Inna 可以选择“竖直线段”类型,然后分别画如下两条线段:$(0,0)$ 到 $(0,2)$,以及 $(1,0)$ 到 $(1,1)$。如果选择水平线段,最少需要 3 条线段。 在第三个样例中,需要注意的是 Inna 在游戏过程中不能更改线段的类型。因此,无论是选择竖直还是水平类型,都至少需要 3 条线段。 由 ChatGPT 5 翻译