解题思路: 首先,我们需要先对输入的数对进行排序,排序的规则是按照Ai的值从小到大进行排序,如果Ai的值相等,则按照Bi的值从大到小进行排序。 排序后,我们可以使用贪心算法进行求解。我们从第一个数对开始,遍历每个数对,如果当前数对的Bi的值大于之前的所有数对的Ai的最大值,那么我们就将当前数对加入到结果集合中。最后,结果集合的大小就是所求的最多的对数。

具体实现时,我们可以使用一个变量maxA来记录当前已经遍历过的数对中的Ai的最大值,使用一个变量cnt来记录已经加入到结果集合中的数对的个数。我们遍历每个数对,如果当前数对的Ai的值大于maxA,那么我们将cnt加1,并更新maxA的值为当前数对的Ai的值。最后,输出cnt即可。

时间复杂度分析: 对数对进行排序的时间复杂度为O(NlogN),遍历每个数对的时间复杂度为O(N),因此总的时间复杂度为O(NlogN)。

空间复杂度分析: 除了输入和输出所需要的空间外,我们只需要使用常数个变量来存储中间结果,因此空间复杂度为O(1)。

Cpp题目描述给你 �N 对数 �1�1……����A 1 B 1 ……A n B n 。要求你从中找出最多的对把它们按照一种方式排列重新标号 12�12k。能满足对于每一对 ��ij 都有 ����A i B j 。输入格式第一行给出一个数字 �N�=100000N=100000下面 �N 行分别给出 ����A i B i 其小于 10910 9 输出格式输出 �K 的极大值输

原文地址: https://www.cveoy.top/t/topic/iShV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录