3828: 最长数对链

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:12 解决:6

题目描述

给定 n 个数对,每个数对由两个整数 (a,b) 组成,且满足 a<b 。
如果数对 (c,d) 可以跟在数对 (a,b) 后面(即构成一条链),当且仅当 b<c 。也就是说,前一个数对的第二个数必须严格小于后一个数对的第一个数。
你可以按任意顺序选择数对来构造这条链。不需要使用所有的数对。
你的任务是计算并返回能够形成的最长数对链的长度。

输入

第一行包含一个整数 n (1n1000 ),表示数对的总数。
接下来 n 行,每行包含两个整数 ai,bi ( 1000ai<bi1000 ),表示第 i 个数对。

输出

输出一个整数,表示能够形成的最长数对链的长度。

样例输入 复制

4
1 2
7 8
4 5
3 6

样例输出 复制

3

提示

在样例中,最长的数对链可以是 (1, 2) -> (3, 6) -> (7, 8) 或者 (1, 2) -> (4, 5) -> (7, 8),长度均为 3。
注意:(1, 2) 后面不能直接接 (4, 5) 因为 2<4 成立,但若要接 (3, 6) 则需 2<3 也成立。这里展示了贪心策略或动态规划的结果。