AcWing 1012. 友好城市
原题链接
简单
作者:
Acvv_scl
,
2021-04-04 13:30:21
,
所有人可见
,
阅读 330
思路
- 本质上也是求最长的上升子序列
- 一边为索引,另一边为值 所以需要将索引从小到达排序下;
- es[i][0] 表示的一边的城市编号
- es[i][1] 表示的是 这个城市的 所对应的友好城市是哪个
import java.util.*;
public class Main{
static int N=5010;
static int []f=new int [N];
//这里不能多开辟空间 否则排序会有问题;如果多开辟 可以后续 初始化
static int [][]es=new int [N][2];
public static void main(String[]args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
Arrays.stream(es).forEach(t->Arrays.fill(t,0x7fffffff));
for(int i=0;i<n;i++){
es[i][0]=sc.nextInt();
es[i][1]=sc.nextInt();
}
Arrays.sort(es,(t1,t2)->t1[0]-t2[0]);
int res=0;
for(int i=0;i<n;i++){
f[i]=1;
for(int j=0;j<i;j++){
if(es[i][1]>es[j][1])f[i]=Math.max(f[i],f[j]+1);
}
res=Math.max(res,f[i]);
}
System.out.println(res);
}
}