一、题目链接
二、题目分析
(一)算法标签
动态规划 线性DP 最长上升子序列
(二)解题思路
本题想出LIS较难,实际上就是LIS
三、AC代码
解法一:
#include <iostream>
#include <algorithm>
using namespace std;
typedef pair<int, int> PII;
const int N = 5010;
int n;
PII p[N];
int f[N];
int res;
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; i ++ ) scanf("%d%d", &p[i].first, &p[i].second);
sort(p + 1, p + 1 + n);
for (int i = 1; i <= n; i ++ )
{
f[i] = 1;
for (int j = 1; j < i; j ++ )
if (p[i].second > p[j].second)
f[i] = max(f[i], f[j] + 1);
res = max(res, f[i]);
}
printf("%d", res);
return 0;
}