记录编号 |
5336 |
评测结果 |
AAAAAAAAAAA |
题目名称 |
[USACO Feb08] 麻烦的聚餐 |
最终得分 |
100 |
用户昵称 |
[死·]丶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.