记录编号 5336 评测结果 AAAAAAAAAAA
题目名称 [USACO Feb08] 麻烦的聚餐 最终得分 100
用户昵称 Gravatar[死·]丶Moon 是否通过 通过
代码语言 Pascal 运行时间 0.016 s
提交时间 2008-10-26 10:32:36 内存使用 0.80 MiB
显示代码纯文本
var
  n,i,tmp:longint;
  f:array[0..30000,1..2,1..3] of longint;
  a:array[1..3] of longint;

function min(a,b:longint):longint;
begin
  if a>b then min:=b else min:=a;
end;

function min3(a,b,c:longint):longint;
var
  d:longint;
begin
  d:=maxlongint;
  if a<d then d:=a;
  if b<d then d:=b;
  if c<d then d:=c;
  exit(d);
end;

begin
  assign(input,'egroup.in');
  reset(input);
  assign(output,'egroup.out');
  rewrite(output);
  readln(n);
  for i:=1 to n do
  begin
    readln(tmp);
    if tmp=1 then
    begin
      a[1]:=0;
      a[2]:=1;
      a[3]:=1;
    end
    else
    if tmp=2 then
    begin
      a[1]:=1;
      a[2]:=0;
      a[3]:=1;
    end
    else
    begin
      a[1]:=1;
      a[2]:=1;
      a[3]:=0;
    end;
    f[i,1,1]:=f[i-1,1,1]+a[1];
    f[i,1,2]:=min(f[i-1,1,1]+a[2],f[i-1,1,2]+a[2]);
    f[i,1,3]:=min3(f[i-1,1,1]+a[3],f[i-1,1,2]+a[3],f[i-1,1,3]+a[3]);
    f[i,2,3]:=f[i-1,2,3]+a[3];
    f[i,2,2]:=min(f[i-1,2,3]+a[2],f[i-1,2,2]+a[2]);
    f[i,2,1]:=min3(f[i-1,2,1]+a[1],f[i-1,2,2]+a[1],f[i-1,2,3]+a[1]);
  end;
  writeln(min(min3(f[n,1,1],f[n,1,2],f[n,1,3]),min3(f[n,2,1],f[n,2,2],f[n,2,3])));
  close(input);
  close(output);
end.