动态规划,最长不下降子序列,LIS问题,刚看完,还是很快就写出来了,记一下怕自己忘。
#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000000;
int main()
{
int n, m, l, temp, count = 0, num[210], a[10010], dp[10010], ans = -1;
fill(num, num + 210, INF);
scanf("%d%d", &n, &m);
for(int i = 0; i < m; i++){
scanf("%d", &temp);
num[temp] = i;
}
scanf("%d", &l);
for(int i = 0; i < l; i++){
scanf("%d", &temp);
if(num[temp] != INF) a[count++] = temp;
}
for(int i = 0; i < count; i++){
dp[i] = 1;
for(int j = 0; j < i; j++){
if(num[a[j]] <= num[a[i]] && dp[i] < dp[j] + 1) dp[i] = dp[j] + 1;
}
ans = max(ans, dp[i]);
}
printf("%d", ans);
return 0;
}