• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

wdgtty

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

最长公共子序列(基础和优化模板)

include<bits/stdc++.h>

define int long long

using namespace std;
const int N=1e5+10;
map<int,int>mp;
int f[N],cnt,n,a[N],b[N];
signed main()
{
cin >> n;
for(int i = 1; i <= n; i++)
{
cin>>a[i];
mp[a[i]]=i;
}
for(int i = 1; i <= n; i++)
{
cin >> b[i];
b[i] = mp[b[i]];
}
f[++cnt]=b[1];
for (int i = 2;i <= n;i++)
{
if (b[i] >= f[cnt])
{
f[++cnt] = b[i];
}
else
{
int x = lower_bound(f+1,f+cnt+1,b[i])-f;
f[x] = b[i];
}
}
cout << cnt << "\n";
return 0;
}

posted on 2024-06-22 08:58  到底有没有  阅读(12)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3