关注
T3通过代码,不过题目描述似乎有问题,反馈他们说没问题。 #include <iostream>
#include <sstream>
#include <vector>
#include <string>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <stack>
#include <queue>
#include <map>
using namespace std;
#define MAXN 50010
const int INF = 1e9;
int idx[MAXN];
int b[MAXN];
int a;
int dp[MAXN];
int main()
{
int n;
scanf("%d", &n);
for(int i=0; i<n; i++){
scanf("%d", &a);
idx[a-1] = i;
}
for(int i=0; i<n; i++){
scanf("%d", &a);
b[i] = idx[a-1];
dp[i] = INF; // 初始化为无限大
}
//最长递增子序列
int pos = 0; // 记录dp当前最后一位的下标
dp[0] = b[0]; // dp[0]值显然为a[0]
for (int i = 1; i < n; i++) {
if (b[i] > dp[pos]) // 若a[i]大于dp数组最大值,则直接添加
dp[++pos] = b[i];
else // 否则找到dp中第一个大于等于a[i]的位置,用a[i]替换之。
dp[lower_bound(dp, dp + pos + 1, b[i]) - dp] = b[i]; // 二分查找
}
printf("%d\n", pos+1);
return 0;
}
查看原帖
点赞 2
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享

点赞 评论 收藏
分享

点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 面试问题记录 #
20595次浏览 346人参与
# 硬件人你反向读研了吗 #
40202次浏览 608人参与
# 京东TGT #
28513次浏览 151人参与
# 硬件人秋招的第一个offer #
65964次浏览 1081人参与
# 滴滴工作体验 #
23680次浏览 123人参与
# 非技术岗投递进展 #
137579次浏览 1222人参与
# 材料进Fab厂真的劝退吗? #
36442次浏览 158人参与
# 不考虑转正,实习多久合适 #
24506次浏览 118人参与
# 机械求职避坑tips #
41411次浏览 355人参与
# 互联网回暖,腾讯要招5000+人! #
263546次浏览 4889人参与
# 面试经验谈 #
13470次浏览 200人参与
# 机械只有转码才有出路吗? #
125904次浏览 1590人参与
# 职场新人生存指南 #
333253次浏览 7144人参与
# 面试吐槽bot #
2640次浏览 32人参与
# 异地恋该为对方跳槽吗 #
23941次浏览 119人参与
# 硬件人更看重稳定还是高薪 #
39090次浏览 203人参与
# vivo求职进展汇总 #
208624次浏览 1341人参与
# 25届如何提前做秋招准备? #
163958次浏览 2451人参与
# 你遇到过哪些神仙同事 #
69752次浏览 623人参与
# 租房找室友 #
28032次浏览 146人参与
# 深信服求职进展汇总 #
188898次浏览 1694人参与