1609: [Usaco2008 Feb]Eating Together麻烦的聚餐

做模拟赛受虐了,切usaco玩。

 

 
 
  1: program bzoj1609;
  2: uses math;
  3: const  maxn=30000;
  4: var i,n,ans:longint;
  5:     f:array[0..maxn,1..3] of longint;
  6:     D:array[0..maxn] of longint;
  7: procedure swap(var a,b:longint);
  8:           var t:longint;
  9:           begin t:=a;a:=b;b:=t;end;
 10: procedure DP;
 11:           var i,j,k:longint;
 12:           begin
 13:           filldword(f,sizeof(f)>>2,maxlongint);
 14:           F[0][1]:=0;F[0][2]:=0;F[0][3]:=0;
 15:           for i:=1 to n do
 16:             for j:=1 to 3 do
 17:               for k:=1 to j do
 18:                 if D[i]=j
 19:                   then F[i][j]:=min(F[i-1][k],  F[i][j])
 20:                   else F[i][j]:=min(F[i-1][k]+1,F[i][j]);
 21:           ans:=min(min(F[n][1],F[n][2]),F[n][3]);
 22:           end;
 23: begin
 24: readln(n);ans:=maxlongint;
 25: for i:=1 to n do readln(D[i]);DP;
 26: for i:=1 to n>>1 do swap(D[i],D[n-i+1]);DP;
 27: writeln(ans);  
 28: end.
 29: 

转载于:https://www.cnblogs.com/lijianlin1995/archive/2012/11/01/2749009.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值