LCS 30pts,玄关求调
查看原帖
LCS 30pts,玄关求调
1340759
ARIS2_0楼主2024/9/23 13:49
#include<bits/stdc++.h>
using namespace std;
#define int long long
struct node{
	int a,b;
}data[100010];
bool operator < (node a,node b){
	return a.a<b.a;
}
int f[100010];
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	int n;cin>>n;
	for(int i=1;i<=n;i++)cin>>data[i].a;
	for(int i=1;i<=n;i++)cin>>data[i].b;
	sort(data+1,data+n+1);
	for(int i=0;i<=n;i++)f[i]=9e18;
	f[0]=-f[0];int ans=1;
	for(int i=1;i<=n;i++){
		int x=upper_bound(f,f+n+1,data[i].b)-f;
		f[x]=min(f[x],data[i].b);ans=max(ans,x);
	}cout<<ans;
	return 0;
}

思路:对上面的那一行进行排序,然后对下面那一行求 LIS(最长上升子序列)

求调

2024/9/23 13:49
加载中...