记录编号 79997 评测结果 AAAAAAAAAA
题目名称 交错匹配 最终得分 100
用户昵称 Gravatar赵赵赵 是否通过 通过
代码语言 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.