题目:ABC130E
#include <iostream>
#define INF 1000000007
#define max(a,b) (a>b?a:b)
using namespace std;
const int N = 2001;
int a[2*N],b[2*N],dp[N][N],n,m;
int main(){
cin >> n >> m;
for(int i = 1; i <= n; i++)
cin >> a[i];
for(int i = 1; i <= m; i++)
cin >> b[i];
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++){
dp[i][j] = max(dp[i-1][j],dp[i][j-1]);
if(a[i] == b[j])
dp[i][j] = max(dp[i][j],dp[i-1][j-1]+1);
}
cout << dp[n][m] % INF;
putchar(10);
return 0;
}
样例没过,不知道哪里错了