话说今天没事干一直写dp。。。。。
一开始看见还是挺吓人的。。。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int w;
int main()
{
scanf("%d",&w);
while(w--)
{
int n,m;
scanf("%d%d",&n,&m);
int up[209],down[209],f[209][209];
for(int i=1;i<=n;i++)
scanf("%d",&up[i]);
for(int i=1;i<=m;i++)
scanf("%d",&down[i]);
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(up[i]==down[j])
f[i][j]=max(f[i-1][j],f[i][j-1]);
else
{
f[i][j]=max(f[i-1][j],f[i][j-1]);
int l=i-1,r=j-1;
while(up[l]!=down[j]&&l>0)
l--;
while(up[i]!=down[r]&&r>0)
r--;
if(l>0&&r>0)
f[i][j]=max(f[i][j],f[l-1][r-1]+2);
}
printf("%d\n",f[n][m]);
}
return 0;
}