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

来源:互联网 发布:傻瓜音效制作软件 编辑:程序博客网 时间:2024/05/16 11:33
#include<iostream>#include<cstring>#include<cstdio>using namespace std;inline int read(){      int x=0,f=1;char ch=getchar();      while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}      while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}      return x*f;  }  int n,ans=99999999,d[30001],f[30001][4];void dp(){    memset(f,127,sizeof(f));    f[0][1]=f[0][2]=f[0][3]=0;    for(int i=1;i<=n;i++)        for(int j=1;j<=3;j++)            for(int k=1;k<=j;k++){                if(d[i]==j)f[i][j]=min(f[i][j],f[i-1][k]);                else f[i][j]=min(f[i][j],f[i-1][k]+1);            }    ans=min(ans,f[n][1]);    ans=min(ans,f[n][2]);    ans=min(ans,f[n][3]);}int main(){    n=read();    for(int i=1;i<=n;i++)d[i]=read();    dp();    for(int i=1;i<=n>>1;i++)swap(d[i],d[n-i+1]);    dp();    printf("%d",ans);    return 0;}        

0 0