• BZOJ3934 : [CQOI2015]标识设计


    轮廓线插头DP。

    设$f[i][j][a][b][c][d][e]$表示考虑到了$(i,j)$,轮廓线上3个下插头的位置分别为$a,b,c$,是否有右插头,已经放了$e$个$L$的方案数。

    然后直接DP即可。

    时间复杂度$O(nm^4)$。

    #include<cstdio>
    const int N=33,M=4530;
    int n,m,cnt,o,i,j,k,x,id[N][N][N];long long f[2][M][2][4];char a[N];
    struct P{int a,b,c;P(){}P(int _a,int _b,int _c){a=_a,b=_b,c=_c;}}q[M];
    int main(){
      scanf("%d%d",&n,&m);
      for(i=0;i<=m;i++)for(j=i?i+1:0;j<=m;j++)for(k=j?j+1:0;k<=m;k++)q[cnt++]=P(i,j,k);
      for(i=0;i<cnt;i++){
        id[q[i].a][q[i].b][q[i].c]=i;
        id[q[i].a][q[i].c][q[i].b]=i;
        id[q[i].b][q[i].a][q[i].c]=i;
        id[q[i].b][q[i].c][q[i].a]=i;
        id[q[i].c][q[i].a][q[i].b]=i;
        id[q[i].c][q[i].b][q[i].a]=i;
      }
      for(f[0][0][0][0]=i=1;i<=n;i++){
        for(k=0;k<cnt;k++)for(x=0;x<4;x++)f[o][k][1][x]=0;
        scanf("%s",a+1);
        for(j=1;j<=m;j++){
          o^=1;
          for(k=0;k<cnt;k++)for(x=0;x<4;x++)f[o][k][0][x]=f[o][k][1][x]=0;
          for(k=0;k<cnt;k++)for(x=0;x<4;x++){
            if(f[o^1][k][0][x]){
              if(a[j]=='.'){
                f[o][k][0][x]+=f[o^1][k][0][x];
                if(q[k].a==j)f[o][id[0][q[k].b][q[k].c]][1][x]+=f[o^1][k][0][x];
                else if(q[k].b==j)f[o][id[q[k].a][0][q[k].c]][1][x]+=f[o^1][k][0][x];
                else if(q[k].c==j)f[o][id[q[k].a][q[k].b][0]][1][x]+=f[o^1][k][0][x];
                else if(x<3)f[o][id[j][q[k].b][q[k].c]][0][x+1]+=f[o^1][k][0][x];
              }else if(q[k].a!=j&&q[k].b!=j&&q[k].c!=j)f[o][k][0][x]+=f[o^1][k][0][x];
            }
            if(f[o^1][k][1][x]&&a[j]=='.'){
              if(q[k].a==j||q[k].b==j||q[k].c==j)continue;
              f[o][k][0][x]+=f[o^1][k][1][x];
              f[o][k][1][x]+=f[o^1][k][1][x];
            }
          }
        }
      }
      return printf("%lld",f[o][0][0][3]),0;
    }
    

      

  • 相关阅读:
    我的Android学习路线(二)
    利用python3.x实现小爬虫下载贴吧内图片
    我的Android学习路线(一)
    根网科技面试题
    sql语句的执行顺序
    英文面试常见问题汇总
    关于oracle、sqlserver、mysql查询前N条数据的实现
    LinqToSql(一)
    关于一些概念的问题,命名空间,程序集,解决方案,项目
    索引器
  • 原文地址:https://www.cnblogs.com/clrs97/p/5272766.html
Copyright © 2020-2023  润新知