第四回 アルゴリズム実技検定 N問題 - マス目の穴埋め

Source

第四回 アルゴリズム実技検定
問題文

問題概要

省略

解法

省略

cLayversion 20201115-2)のコード

C++に変換後のコードはこちら

int X = 18, Y = 6;
char S[20][8]; int loc[3][6];
ll dp[4096], nx[4096];
{
  int yy = 2*Y, yyy = 3*Y, mask, cur, nmask, c;

  rd(S(X));

  rep(2){
    rep(i,Y) S[X][i] = '0';
    X++;
  }

  dp[0] = 1;
  rep(x,X){
    rep(mask, 1<<yy) nx[mask] = 0;
    rep(mask, 1<<yy) if(dp[mask]) rep(cur, 1<<Y){
      nmask = ((mask << Y) | cur);
      rep(i,yyy) loc[i/Y][i%Y] = if[BIT_ith(nmask,i), 1, 0];
      rep(i,Y) if(S[x][i]=='0' && loc[0][i] != 0) break_continue;
      rep(i,Y) if(S[x][i]=='1' && loc[0][i] != 1) break_continue;

      rep(i,Y){
        c = 0;
        rep(k,3) if(loc[k][i]==1) c++;
        if(i+1 < Y  && loc[1][i+1]==1) c++;
        if(i-1 >= 0 && loc[1][i-1]==1) c++;
        if(c >= 3 && loc[1][i]==0) break_continue;
        if(c <= 2 && loc[1][i]==1) break_continue;
      }

      nmask %= (1<<yy);
      nx[nmask] += dp[mask];
    }
    rep(mask, 1<<yy) dp[mask] = nx[mask];
  }

  wt(sum(dp[0]));
}

Current time: 2021年09月25日00時12分44秒
Last modified: 2020年11月15日16時15分07秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder
トップページに戻る

Logged in as: unknown user (not login)

ログイン: