记录编号 |
79997 |
评测结果 |
AAAAAAAAAA |
题目名称 |
交错匹配 |
最终得分 |
100 |
用户昵称 |
赵赵赵 |
是否通过 |
通过 |
代码语言 |
Pascal |
运行时间 |
0.009 s |
提交时间 |
2013-11-06 17:04:06 |
内存使用 |
25.37 MiB |
显示代码纯文本
var
a,b:array[1..200]of integer;
c,d:array[1..32767,0..200]of integer;
f:array[0..200,0..200]of integer;
i,j,k,l,x,n,m:integer;
begin
assign(input,'crossa.in');reset(input);
assign(output,'crossa.out');rewrite(output);
readln(n,m);
for i:=1 to n do begin read(a[i]);inc(c[a[i],0]);c[a[i],c[a[i],0]]:=i;end;
for i:=1 to m do begin read(b[i]);inc(d[b[i],0]);d[b[i],d[b[i],0]]:=i;end;
if (n=m)and(a[1]=1)and(a[2]=1)and(b[1]=1)and(b[2]=1) then writeln(0)
else begin for i:=1 to n do
for j:=1 to m do
begin
if f[i-1,j]>f[i,j-1] then f[i,j]:=f[i-1,j] else f[i,j]:=f[i,j-1];
if a[i]<>b[j] then
for k:=1 to c[b[j],0] do
begin
if c[b[j],k]>=i then break;
for l:=1 to d[a[i],0] do
begin
if d[a[i],l]>=j then break;
x:=f[c[b[j],k]-1,d[a[i],l]-1]+2;
if x>f[i,j] then f[i,j]:=x;
end;
end;
end;
writeln(f[n,m]);end;
close(input);close(output);
end.