社区讨论
LIS 求 LCS 方法全 WA 求调
P1439两个排列的最长公共子序列参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mhj9fy0j
- 此快照首次捕获于
- 2025/11/03 22:53 4 个月前
- 此快照最后确认于
- 2025/11/03 22:53 4 个月前
RT,我下载了第一个样例但发现答案正确,我不明白为什么会 WA。

原代码:
CPP#include <bits/stdc++.h>
//#define int long long
using namespace std;
const int N = (int)1e5 + 5;
const int INF = (int)1e18;
int n, len, p1[N], p2[N], id[N], dp[N];
signed main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {scanf("%d", &p1[i]); id[p1[i]] = i;}
for (int i = 1; i <= n; i++) {scanf("%d", &p2[i]); p2[i] = id[p2[i]];}
// for (int i = 1; i <= n; i++) printf("%lld ", p2[i]);
dp[0] = -INF;
for (int i = 1; i <= n; i++) {
if (p2[i] >= dp[len]) dp[++len] = p2[i];
else {
int pos = lower_bound(dp + 1, dp + 1 + len, p2[i]) - dp;
dp[pos] = p2[i];
}
}
printf("%d", len);
return 0;
}
测试点 1:
输入:
5
5 3 2 1 4
3 5 4 2 1
输出:3
回复
共 3 条回复,欢迎继续交流。
正在加载回复...